更新時間:2021-06-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) | 用給定的內容替換當前選定的內容 |
1.JTextField
JTextField稱為文本框,它只能接收單行文本的輸入,接下來介紹一下JTextField常用的構造方法,如表2所示。
表2 JTextField常用構造方法
方法聲明 | 功能描述 |
---|---|
JTextField() | 創建一個空的文本框,初始字符串為null |
JTextFiled(int columns) | 創建一個具有指定列數的文本框,初始字符串為null |
JTextField(String text) | 創建一個顯示指定初始字符串的文本框 |
JTextField(String text,int column) | 創建一個具有指定列數、并顯示指定初始字符串的文本框 |
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) | 構造方法,創建顯示指定初始文本并指定了行列的文本域 |
接下來編寫一個聊天窗口的案例,來演示一下文本組件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所示。
圖1 運行結果
文件1中,通過JFrame模擬了一個簡單的聊天窗口。首先使用JFrame頂級容器創建并設置了一個聊天窗口,同時通過BorderLayout布局管理器將窗口分為上下兩個區域,并分別將一個JScrollPane滾動面板組件和一個JPanel面板組件填充到上下區域中。其中,在頁頭PAGE_START區域放置了一個JScrollPane滾動面板,在該面板中封裝了一個JTextArea文本域用于顯示聊天記錄;在頁尾PAGE_END區域放置了一個JPanel面板,在該面板中放置了三個組件,JLabel標簽用于信息說明,JTextField文本框用于輸入用戶的聊天信息,JButton按鈕用于發送聊天信息。
需要說明的是,文件1中使用到的JLabel組件,是一個靜態組件,用于顯示一行靜態文本和圖標,它起到的作用只是信息說明,不接收用戶的輸入,也不能添加事件,具體用法會在下一小節說明。
在圖1所示的聊天窗口中輸入聊天信息,并單擊【發送】按鈕,結果如圖2所示。
圖2 運行結果
從圖2可以看出,該聊天窗口工具可以按照程序正確執行。
猜你喜歡: