更新時(shí)間:2021-06-22 來(lái)源:黑馬程序員 瀏覽量:
IT就到黑馬程序員.gif)
文本組件用于接收用戶輸入的信息,其中包括文本框(JTextField)、文本域(JTextArea)等,它們都有一個(gè)共同父類(lèi)JTextComponent,JTextComponent是一個(gè)抽象類(lèi),它提供了文本組件常用的方法,如表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稱(chēng)為文本框,它只能接收單行文本的輸入,接下來(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ù)、并顯示指定初始字符串的文本框 |
JTextField有一個(gè)子類(lèi)JPasswordField,它表示一個(gè)密碼框,只能接收用戶的單行輸入,但是在此框中不顯示用戶輸入的真實(shí)信息,而是通過(guò)顯示指定的回顯字符作為占位符。新創(chuàng)建的密碼框默認(rèn)的回顯字符為“*”。JPasswordField和JTextField的構(gòu)造方法相似,這里就不再介紹了。
2.JTextArea
JTextArea稱(chēng)為文本域,它能接收多行文本的輸入,使用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)建顯示指定初始文本并指定了行列的文本域 |
接下來(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工具類(lèi)調(diào)用createAndShowGUI()方法并顯示GUI程序
SwingUtilities.invokeLater(Example11::createAndShowGUI);
}
}運(yùn)行結(jié)果如圖1所示。

圖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所示。

圖2 運(yùn)行結(jié)果
從圖2可以看出,該聊天窗口工具可以按照程序正確執(zhí)行。
猜你喜歡:
1024首播|39歲程序員逆襲記:不被年齡定義,AI浪潮里再迎春天
2025-10-241024程序員節(jié)丨10年同行,致敬用代碼改變世界的你
2025-10-24【AI設(shè)計(jì)】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計(jì)連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運(yùn)營(yíng)】深圳跨境電商運(yùn)營(yíng)畢業(yè)22個(gè)工作日,就業(yè)率91%+,最高薪資達(dá)13500元
2025-09-19【AI運(yùn)維】鄭州運(yùn)維1期就業(yè)班,畢業(yè)14個(gè)工作日,班級(jí)93%同學(xué)已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開(kāi)發(fā)】上海校區(qū)AI鴻蒙開(kāi)發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19