Java Swing 如何添加输入文字并且可以滚动的文本框?( JTextArea ,JScrollPane的使用)

准备:

JTextArea 文本区,一个可以输入文字的文本框

常用方法:

            1.setText(String t)设置文本区中显示的文本

            2.getText() 获取文本区中显示的文本

JScrollPane 滑动窗格容器,一般放入长度或者宽度特别长的控件,通过滑动来查看控件中由于太长而显示不出来的部分

首先创建一个可以输入文本:

 1 package swing;
 2 
 3 import java.awt.Dimension;
 4 import java.awt.EventQueue;
 5 
 6 import javax.swing.JButton;
 7 import javax.swing.JFrame;
 8 import javax.swing.JScrollPane;
 9 import javax.swing.JTextArea;
10 import java.awt.BorderLayout;
11 
12 public class MyTextArea {
13 
14     private JFrame frame;
15     private JTextArea textArea;
16 
17     /**
18      * Launch the application.
19      */
20     public static void main(String[] args) {
21         EventQueue.invokeLater(new Runnable() {
22             public void run() {
23                 try {
24                     MyTextArea window = new MyTextArea();
25                     window.frame.setVisible(true);
26                 } catch (Exception e) {
27                     e.printStackTrace();
28                 }
29             }
30         });
31     }
32 
33     /**
34      * Create the application.
35      */
36     public MyTextArea() {
37         initialize();
38     }
39 
40     /**
41      * Initialize the contents of the frame.
42      */
43     private void initialize() {
44         
45         //创建一个对话框
46         frame = new JFrame();
47         //创建一个文本区
48         textArea = new JTextArea();
49         //将文本区添加到弹出框框
50         frame.add(textArea);
51         //设置弹出框框
52         frame.setLocation(200,50);
53         frame.setSize(620,660);
54         frame.setVisible(true);
55         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
56         
57         //给文本区设置显示值
58         textArea.setText("汤老师好!");
59         //获取文本区的值并打印到控制台
60         System.out.println(textArea.getText());
61     }
62 
63 }
View Code

 

运行程序就可以在弹出的框框中输入文字了。但是这里有个问题:如果我输入的内容特别多,例如有1000个字。这个文本区控件只会显示一行!为了让文本区控件能够自动换行,需要加上下面这行代码:

//设置当文本字长度超过frame的宽度时自动换行()
textArea.setLineWrap(true);

这些可以自动换行了,但是问题又来了。如果我的文字特别多,多到弹出的框框都显示不下了怎么办?这时就需要将这个文本区控件textArea放入JScrollPane控件中,让它能够“滚动起来”。这样就能通过滚动来查看文本区中显示不下的内容了。将initialize()方法修改为如下代码:

 1 private void initialize() {
 2         
 3         //创建一个对话框
 4         frame = new JFrame();
 5         //创建一个文本区
 6         textArea = new JTextArea();
 7         //设置当文本字长度超过frame的宽度时自动换行()
 8         textArea.setLineWrap(true);
 9         
10         //创建一个滑动窗格容器,并将刚刚创建的文本区放入其中,当文本区textArea中的内容超过弹出框框frame的长度时。滑动就可以查看没显示出来的内容
11         JScrollPane scrollpane=new JScrollPane(textArea);
12         //将滑动窗格容器添加到弹出框框
13         frame.add(scrollpane);
14         //设置弹出框框
15         frame.setLocation(200,50);
16         frame.setSize(620,660);
17         frame.setVisible(true);
18         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
19         
20         //给文本区设置显示值
21         textArea.setText("汤老师好!");
22         //获取文本区的值并打印到控制台
23         System.out.println(textArea.getText());
24 }
View Code

 

有的时候还需要设置文本区控件中显示的值,通过setText(String t)方法实现。如果要获取文本区中显示的值则使用getText()方法。

1 //给文本区设置显示值
2 textArea.setText("汤老师好!");
3 //获取文本区的值并打印到控制台
4 System.out.println(textArea.getText());
View Code

 

完整的代码:

 1 package swing;
 2 
 3 import java.awt.Dimension;
 4 import java.awt.EventQueue;
 5 
 6 import javax.swing.JButton;
 7 import javax.swing.JFrame;
 8 import javax.swing.JScrollPane;
 9 import javax.swing.JTextArea;
10 import java.awt.BorderLayout;
11 
12 public class MyTextArea {
13 
14     private JFrame frame;
15     private JTextArea textArea;
16 
17     /**
18      * Launch the application.
19      */
20     public static void main(String[] args) {
21         EventQueue.invokeLater(new Runnable() {
22             public void run() {
23                 try {
24                     MyTextArea window = new MyTextArea();
25                     window.frame.setVisible(true);
26                 } catch (Exception e) {
27                     e.printStackTrace();
28                 }
29             }
30         });
31     }
32 
33     /**
34      * Create the application.
35      */
36     public MyTextArea() {
37         initialize();
38     }
39 
40     /**
41      * Initialize the contents of the frame.
42      */
43 private void initialize() {
44         
45         //创建一个对话框
46         frame = new JFrame();
47         //创建一个文本区
48         textArea = new JTextArea();
49         //设置当文本字长度超过frame的宽度时自动换行()
50         textArea.setLineWrap(true);
51         
52         //创建一个滑动窗格容器,并将刚刚创建的文本区放入其中,当文本区textArea中的内容超过弹出框框frame的长度时。滑动就可以查看没显示出来的内容
53         JScrollPane scrollpane=new JScrollPane(textArea);
54         //将滑动窗格容器添加到弹出框框
55         frame.add(scrollpane);
56         //设置弹出框框
57         frame.setLocation(200,50);
58         frame.setSize(620,660);
59         frame.setVisible(true);
60         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
61         
62         //给文本区设置显示值
63         textArea.setText("汤老师好!");
64         //获取文本区的值并打印到控制台
65         System.out.println(textArea.getText());
66 }
67 }
View Code

 

作业:

1.复制完整代码到eclipse中,但是initialize()方法部分手动输入,变敲边理解代码。

2.完成一个程序要求

  1.包含一个button,个可以输入的文本框A 和B

  2.在B中输入文字后,点击button 文字就出现在A中,并且还要在控制台输出B中的文字,最后清空B中的输入

  3.当A或者B中内容太多时,可以有滚动效果,查看显示不了的内容 

3.理解以下代码

 1 package swing;
 2 
 3 import java.awt.Button;
 4 import java.awt.Dimension;
 5 import java.awt.EventQueue;
 6 
 7 import javax.swing.JButton;
 8 import javax.swing.JFrame;
 9 import javax.swing.JScrollPane;
10 import javax.swing.JTextArea;
11 import java.awt.BorderLayout;
12 
13 public class MyTextArea {
14 
15     private JFrame frame;
16     
17 
18     /**
19      * Launch the application.
20      */
21     public static void main(String[] args) {
22         EventQueue.invokeLater(new Runnable() {
23             public void run() {
24                 try {
25                     MyTextArea window = new MyTextArea();
26                     window.frame.setVisible(true);
27                 } catch (Exception e) {
28                     e.printStackTrace();
29                 }
30             }
31         });
32     }
33 
34     /**
35      * Create the application.
36      */
37     public MyTextArea() {
38         initialize();
39     }
40 
41     /**
42      * Initialize the contents of the frame.
43      */
44     private void initialize() {
45         
46         //创建一个对话框
47         frame = new JFrame();
48         
49         //创建一个按钮
50         JButton jButton = new JButton();
51         jButton.setBounds(0, 0, 620, 638);
52         //设置jButton中显示的文本
53         jButton.setText("1233336666666666666666666666666666666666666666");
54         //设置按钮高为5000 宽为620
55         jButton.setPreferredSize(new Dimension(620,5000)); 
56         //创建一个滑动窗格容器,将按钮jButton放入其中,
57         JScrollPane scrollpane=new JScrollPane(jButton);
58         //将滑动窗格容器添加到弹出框框
59         frame.add(scrollpane);
60         //设置弹出框框
61         frame.setLocation(200,50);
62         frame.setSize(620,660);
63         frame.setVisible(true);
64         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
65         
66     }
67 
68 }
View Code

 

  

 

posted @ 2015-08-24 23:58  老司机飙车  阅读(6121)  评论(0编辑  收藏  举报