• <nav id="dstbx"></nav>

    <nav id="dstbx"></nav>
    1. <form id="dstbx"></form>
    2. <small id="dstbx"></small>

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

      全國咨詢/投訴熱線:400-618-4000

      Swing文本組件JTextField和JTextArea有哪些區別?

      更新時間:2021年06月22日17時22分 來源:傳智教育 瀏覽次數:

      傳智教育-一樣的教育,不一樣的品質

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

      表1 JTextComponent常用方法

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

      1.JTextField

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

      表2 JTextField常用構造方法

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

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

      2.JTextArea

      JTextArea稱為文本域,它能接收多行文本的輸入,使用JTextArea構造方法創建對象時可以設定區域的行數、列數,接下來介紹一下JTextArea常用的構造方法,如表3所示。

      表3 JTextArea常用構造方法
       

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

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

      文件1 Example11.java

           import java.awt.*;
           import javax.swing.*;
           public class Example11 {
               private static void createAndShowGUI() {
                   // 1、創建一個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、創建一個JTextArea文本域,用來顯示多行聊天信息
                   JTextArea showArea = new JTextArea(12, 34);
                   // 創建一個JScrollPane滾動面板組件,將JTextArea文本域作為其顯示組件
                   JScrollPane scrollPane = new JScrollPane(showArea);
                   showArea.setEditable(false); // 設置文本域不可編輯
                   // 3、創建一個JTextField文本框,用來輸入單行聊天信息
                   JTextField inputField = new JTextField(20);
                   JButton btn = new JButton("發送"); 
                   // 為按鈕添加監聽事件
                   btn.addActionListener(e -> {
                       String content = inputField.getText();
                       // 判斷輸入的信息是否為空
                       if (content != null && !content.trim().equals("")) {
                           // 如果不為空,將輸入的文本追加到到聊天窗口
                           showArea.append("本人輸入信息:" + content + "\n");
                       } else {
                           // 如果為空,提示聊天信息不能為空
                           showArea.append("聊天信息不能為空?。?!" + "\n");
                       }
                       inputField.setText(""); // 將輸入的文本域內容置為空
                   });
                   // 3、創建一個JPanel面板組件
                   JPanel panel = new JPanel();
                   JLabel label = new JLabel("聊天信息");// 創建一個標簽
                   panel.add(label);                        // 將標簽組件添加到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工具類調用createAndShowGUI()方法并顯示GUI程序
                   SwingUtilities.invokeLater(Example11::createAndShowGUI);
               }
           }

      運行結果如圖1所示。

      1624351742988_11.png

      圖1 運行結果

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

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

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

      1624351748401_12.png

      圖2 運行結果

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

      猜你喜歡:

      Swing有幾種常用的事件處理方式?如何監聽事件?

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

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

      傳智教育Java高級軟件工程師培訓

      0 分享到:
      神马影院我不卡