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

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM