教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

Swing文本組件JTextField和JTextArea有哪些區(qū)別?

更新時(shí)間:2021年06月22日17時(shí)22分 來(lái)源:傳智教育 瀏覽次數(shù):

傳智教育-一樣的教育,不一樣的品質(zhì)

文本組件用于接收用戶輸入的信息,其中包括文本框(JTextField)、文本域(JTextArea)等,它們都有一個(gè)共同父類JTextComponent,JTextComponent是一個(gè)抽象類,它提供了文本組件常用的方法,如表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這兩個(gè)文本組件都繼承了JTextComponent類,因此它們都具有表8-7中的方法。但在使用上還有一定的區(qū)別,接下來(lái)就對(duì)這兩個(gè)文本組件進(jìn)行詳細(xì)講解。

1.JTextField

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

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

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

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

2.JTextArea

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

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

方法聲明 功能描述
JTextArea() 構(gòu)造方法,創(chuàng)建一個(gè)空的文本域
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è)構(gòu)造方法,在創(chuàng)建文本域時(shí),通常會(huì)使用最后兩個(gè)構(gòu)造方法,指定文本域的行數(shù)和列數(shù)。

接下來(lái)編寫(xiě)一個(gè)聊天窗口的案例,來(lái)演示一下文本組件JTextField和JTextArea組件的基本使用,如文件1所示。

文件1 Example11.java

     import java.awt.*;
     import javax.swing.*;
     public class Example11 {
         private static void createAndShowGUI() {
             // 1、創(chuàng)建一個(gè)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)建一個(gè)JTextArea文本域,用來(lái)顯示多行聊天信息
             JTextArea showArea = new JTextArea(12, 34);
             // 創(chuàng)建一個(gè)JScrollPane滾動(dòng)面板組件,將JTextArea文本域作為其顯示組件
             JScrollPane scrollPane = new JScrollPane(showArea);
             showArea.setEditable(false); // 設(shè)置文本域不可編輯
             // 3、創(chuàng)建一個(gè)JTextField文本框,用來(lái)輸入單行聊天信息
             JTextField inputField = new JTextField(20);
             JButton btn = new JButton("發(fā)送"); 
             // 為按鈕添加監(jiān)聽(tīng)事件
             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)建一個(gè)JPanel面板組件
             JPanel panel = new JPanel();
             JLabel label = new JLabel("聊天信息");// 創(chuàng)建一個(gè)標(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);
         }
     }

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

1624351742988_11.png

圖1 運(yùn)行結(jié)果

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

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

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

1624351748401_12.png

圖2 運(yùn)行結(jié)果

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

猜你喜歡:

Swing有幾種常用的事件處理方式?如何監(jiān)聽(tīng)事件?

類的加載機(jī)制是什么?【Java面試題】

什么是繼承?Java中如何聲明一個(gè)類繼承另一個(gè)類?

傳智教育Java高級(jí)軟件工程師培訓(xùn)

0 分享到:
和我們?cè)诰€交談!