更新時(shí)間:2021年06月22日17時(shí)22分 來(lái)源:傳智教育 瀏覽次數(shù):
文本組件用于接收用戶輸入的信息,其中包括文本框(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)容 |
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ù)、并顯示指定初始字符串的文本框 |
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)建顯示指定初始文本并指定了行列的文本域 |
接下來(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所示。
圖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í)行。
猜你喜歡:Swing有幾種常用的事件處理方式?如何監(jiān)聽(tīng)事件?
北京校區(qū)