更新時間:2021-06-22 來源:黑馬程序員 瀏覽量:
文本組件用于接收用戶輸入的信息,其中包括文本框(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)容 |
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ù)、并顯示指定初始字符串的文本框 |
JTextField有一個子類JPasswordField,它表示一個密碼框,只能接收用戶的單行輸入,但是在此框中不顯示用戶輸入的真實(shí)信息,而是通過顯示指定的回顯字符作為占位符。新創(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)建顯示指定初始文本并指定了行列的文本域 |
接下來編寫一個聊天窗口的案例,來演示一下文本組件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); } }
運(yùn)行結(jié)果如圖1所示。
圖1 運(yùn)行結(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所示。
圖2 運(yùn)行結(jié)果
從圖2可以看出,該聊天窗口工具可以按照程序正確執(zhí)行。
猜你喜歡: