首頁技術(shù)文章正文

Swing文本組件JTextField和JTextArea介紹

更新時間:2021-06-22 來源:黑馬程序員 瀏覽量:

1577370495235_學(xué)IT就到黑馬程序員.gif

文本組件用于接收用戶輸入的信息,其中包括文本框(JTextField)、文本域(JTextArea)等,它們都有一個共同父類JTextComponent,JTextComponent是一個抽象類,它提供了文本組件常用的方法,如表1所示。

表1 JTextComponent常用方法

方法聲明功能描述
String String getText()返回文本組件中所有的文本內(nèi)容
String getSelectedText()返回文本組件中選定的文本內(nèi)容
void selectAll()在文本組件中選中所有內(nèi)容
void setEditable()設(shè)置文本組件為可編輯或者不可編輯狀態(tài)
void setText(String text)設(shè)置文本組件的內(nèi)容
void replaceSelection(String content)用給定的內(nèi)容替換當(dāng)前選定的內(nèi)容
表8-7中列出了文本組件常用的幾種操作方法,其中包括選中文本內(nèi)容、設(shè)置文本內(nèi)容以及獲取文本內(nèi)容等。由于JTextField和JTextArea這兩個文本組件都繼承了JTextComponent類,因此它們都具有表8-7中的方法。但在使用上還有一定的區(qū)別,接下來就對這兩個文本組件進(jìn)行詳細(xì)講解。

1.JTextField

JTextField稱為文本框,它只能接收單行文本的輸入,接下來介紹一下JTextField常用的構(gòu)造方法,如表2所示。

表2 JTextField常用構(gòu)造方法

方法聲明功能描述
JTextField()創(chuàng)建一個空的文本框,初始字符串為null
JTextFiled(int columns)創(chuàng)建一個具有指定列數(shù)的文本框,初始字符串為null
JTextField(String text)創(chuàng)建一個顯示指定初始字符串的文本框
JTextField(String text,int column)創(chuàng)建一個具有指定列數(shù)、并顯示指定初始字符串的文本框
表2中,列出了JTextField的四個構(gòu)造方法,在創(chuàng)建JTextField文本框時,通常使用第二個或者第四個構(gòu)造方法,指定文本框的列數(shù)。

JTextField有一個子類JPasswordField,它表示一個密碼框,只能接收用戶的單行輸入,但是在此框中不顯示用戶輸入的真實信息,而是通過顯示指定的回顯字符作為占位符。新創(chuàng)建的密碼框默認(rèn)的回顯字符為“*”。JPasswordField和JTextField的構(gòu)造方法相似,這里就不再介紹了。

2.JTextArea

JTextArea稱為文本域,它能接收多行文本的輸入,使用JTextArea構(gòu)造方法創(chuàng)建對象時可以設(shè)定區(qū)域的行數(shù)、列數(shù),接下來介紹一下JTextArea常用的構(gòu)造方法,如表3所示。

表3 JTextArea常用構(gòu)造方法
 

方法聲明功能描述
JTextArea()構(gòu)造方法,創(chuàng)建一個空的文本域
JTextArea(String text)構(gòu)造方法,創(chuàng)建顯示指定初始字符串的文本域
JTextArea(int rows,int columns)構(gòu)造方法,創(chuàng)建具有指定行和列的空的文本域
JTextArea(String text,int rows,int columns)構(gòu)造方法,創(chuàng)建顯示指定初始文本并指定了行列的文本域
表3中,列出了JTextArea的四個構(gòu)造方法,在創(chuàng)建文本域時,通常會使用最后兩個構(gòu)造方法,指定文本域的行數(shù)和列數(shù)。

接下來編寫一個聊天窗口的案例,來演示一下文本組件JTextField和JTextArea組件的基本使用,如文件1所示。

文件1 Example11.java

     import java.awt.*;
     import javax.swing.*;
     public class Example11 {
         private static void createAndShowGUI() {
             // 1、創(chuàng)建一個JFrame聊天窗口
             JFrame f = new JFrame("聊天窗口");
             f.setLayout(new BorderLayout());
             f.setSize(400, 300);
             f.setLocation(300, 200);
             f.setVisible(true);
             f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
             // 2、創(chuàng)建一個JTextArea文本域,用來顯示多行聊天信息
             JTextArea showArea = new JTextArea(12, 34);
             // 創(chuàng)建一個JScrollPane滾動面板組件,將JTextArea文本域作為其顯示組件
             JScrollPane scrollPane = new JScrollPane(showArea);
             showArea.setEditable(false); // 設(shè)置文本域不可編輯
             // 3、創(chuàng)建一個JTextField文本框,用來輸入單行聊天信息
             JTextField inputField = new JTextField(20);
             JButton btn = new JButton("發(fā)送"); 
             // 為按鈕添加監(jiān)聽事件
             btn.addActionListener(e -> {
                 String content = inputField.getText();
                 // 判斷輸入的信息是否為空
                 if (content != null && !content.trim().equals("")) {
                     // 如果不為空,將輸入的文本追加到到聊天窗口
                     showArea.append("本人輸入信息:" + content + "\n");
                 } else {
                     // 如果為空,提示聊天信息不能為空
                     showArea.append("聊天信息不能為空?。?!" + "\n");
                 }
                 inputField.setText(""); // 將輸入的文本域內(nèi)容置為空
             });
             // 3、創(chuàng)建一個JPanel面板組件
             JPanel panel = new JPanel();
             JLabel label = new JLabel("聊天信息");// 創(chuàng)建一個標(biāo)簽
             panel.add(label);                        // 將標(biāo)簽組件添加到JPanel面板
             panel.add(inputField);                  // 將文本框添加到JPanel面板
             panel.add(btn);                          // 將按鈕添加到JPanel面板
             // 4、向JFrame聊天窗口的頂部和尾部分別加入面板組件JScrollPane和JPanel
             f.add(scrollPane, BorderLayout.PAGE_START);
             f.add(panel, BorderLayout.PAGE_END);
         }
         public static void main(String[] args) {
             // 使用SwingUtilities工具類調(diào)用createAndShowGUI()方法并顯示GUI程序
             SwingUtilities.invokeLater(Example11::createAndShowGUI);
         }
     }

運行結(jié)果如圖1所示。

1624351742988_11.png

圖1 運行結(jié)果

文件1中,通過JFrame模擬了一個簡單的聊天窗口。首先使用JFrame頂級容器創(chuàng)建并設(shè)置了一個聊天窗口,同時通過BorderLayout布局管理器將窗口分為上下兩個區(qū)域,并分別將一個JScrollPane滾動面板組件和一個JPanel面板組件填充到上下區(qū)域中。其中,在頁頭PAGE_START區(qū)域放置了一個JScrollPane滾動面板,在該面板中封裝了一個JTextArea文本域用于顯示聊天記錄;在頁尾PAGE_END區(qū)域放置了一個JPanel面板,在該面板中放置了三個組件,JLabel標(biāo)簽用于信息說明,JTextField文本框用于輸入用戶的聊天信息,JButton按鈕用于發(fā)送聊天信息。

需要說明的是,文件1中使用到的JLabel組件,是一個靜態(tài)組件,用于顯示一行靜態(tài)文本和圖標(biāo),它起到的作用只是信息說明,不接收用戶的輸入,也不能添加事件,具體用法會在下一小節(jié)說明。

在圖1所示的聊天窗口中輸入聊天信息,并單擊【發(fā)送】按鈕,結(jié)果如圖2所示。

1624351748401_12.png

圖2 運行結(jié)果

從圖2可以看出,該聊天窗口工具可以按照程序正確執(zhí)行。






猜你喜歡:

實現(xiàn)JDBC程序一共需要幾步?

MyBatis框架怎樣添加客戶?具體是怎樣操作的?

Java虛擬機的內(nèi)存空間有幾種?

黑馬程序員Java高級軟件工程師培訓(xùn)課程

分享到:
在線咨詢 我要報名
和我們在線交談!