Java詳解聊天窗口的創(chuàng)建流程
Swing組件
JPanel
JPanel和AWT中的Panel組件使用方法基本一致,是一個無邊框,不能被移動,放大,縮小,或者關(guān)閉面板,它的默認布局管理器是FlowLayout,也可以用JPanel帶參數(shù)的構(gòu)造函數(shù)JPanel(LayoutManager layout)或者它的setLayout()方法為其制定布局管理器。
JScrollPane
JScrollPane是一個帶有滾動條的面板容器,而且這個面板只能添加一個組件,如果想在面板中添加多個組件,要把組件添加到JPanel中,然后將JPanel添加到JScrollPane中。
JScrollPane的常用構(gòu)造方法
JScrollPane()//創(chuàng)建一個空的JScrollPane面板 JScrollPane(Component view)//創(chuàng)建一個顯示指定組件的JScrollPane面板,只要組件的內(nèi)容超過視圖大小就會顯示水平和垂直滾動條 JScrollPane(Component view,int vsbPolicy,int hsbPolicy)//創(chuàng)建一個顯示指定容器并具有指定滾動條策略的JScrollPane。參數(shù)vsbPolicy和hsbPolicy分別表示垂直滾動條策略和水平滾動條策略,指定為SCrollPaneConstants的靜態(tài)常量。
JScrollPane的方法
void setHorizontalBarPolicy(int policy)//指定水平滾動條策略,即水平滾動條何時顯示在滾動面板上 void setVerticalBarPolicy(int policy)//指定垂直滾動條策略,即垂直滾動條何時顯示在滾動面板上 void setViewportView(Component view)//設(shè)置在滾動面板顯示的組件 void setHorizontalBarPolicy(int policy)//指定水平滾動條策略,即水平滾動條何時顯示在滾動面板上
void setVerticalBarPolicy(int policy)//指定垂直滾動條策略,即垂直滾動條何時顯示在滾動面板上
void setViewportView(Component view)//設(shè)置在滾動面板顯示的組件如何向容器中添加按鈕
package Swing;
import javax.swing.*;
import java.awt.*;
public class Example02 extends JFrame{
public Example02(){
this.setTitle("PanelDemo");
//創(chuàng)建一個滾動面板
JScrollPane scrollPane=new JScrollPane();
//設(shè)置水平滾動條策略,---滾動條一直顯示
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
//設(shè)置垂直滾動條策略----滾動條需要時顯示
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
//定義一個面板
JPanel panel=new JPanel();
panel.add(new JButton("按鈕一"));
panel.add(new JButton("按鈕二"));
panel.add(new JButton("按鈕三"));
panel.add(new JButton("按鈕四"));
//設(shè)置JPanel面板在滾動面板中顯示
scrollPane.setViewportView(panel);
//將滾動面板添加到內(nèi)容面板的中心區(qū)域
this.add(scrollPane, BorderLayout.CENTER);
//將一個按鈕添加到內(nèi)容面板的SOUTH區(qū)域
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400,250);
this.setVisible(true);
}
public static void main(String[] args) {
new Example02();
}
}
文本組件
文本組件用于接收用戶輸入的信息或向用戶展示信息,包括文本框(JtexField),文本域(JtexArea),它們有一個共同的父類JTextComponent。這是一個抽象類,提供了文本組件常用的方法。
文本組件的常用方法
| 方法描述 | 功能說明 |
|---|---|
| String getText() | 返回文本組件中所有的文本內(nèi)容 |
| String getSeletedText() | 返回文本組件中選定的文本內(nèi)容 |
| void selectAll() | 在文本組件中選中所有內(nèi)容 |
| void setEditable() | 設(shè)置文本組件為可編輯或不可編輯狀態(tài) |
| void setText(String text) | 設(shè)置文本組件的內(nèi)容 |
| void replaceSelection(String content) | 用給定的內(nèi)容替換當前選中的內(nèi)容 |
文本框(JTextField)
只能接收單行文本的輸入,文本框常用的構(gòu)造方法
| 方法描述 | 功能說明 |
|---|---|
| JTextField() | 創(chuàng)建一個空的文本框,初始字符串為null |
| JTextField(int columns) | 創(chuàng)建一個具有指定列數(shù)的文本框,初始字符串為null |
| JTextField(String text) | 創(chuàng)建一個顯示指定初始字符串的文本框 |
| JTextField(String text,intcolumn) | 創(chuàng)建一個具有指定列數(shù)并顯示指定初始字符串的文本框 |
文本域(JTextArea)
能接收多行的文本輸入,可以設(shè)置區(qū)域的行數(shù)和列數(shù),常用的構(gòu)造方法
| 方法描述 | 功能說明 |
|---|---|
| JTextArea(String text) | 創(chuàng)建顯示指定初始字符串的文本域 |
| JTextArea() | 創(chuàng)建一個空的文本域 |
| JTextArea(int rows,int columns) | 創(chuàng)建具有指定行和列的空的文本域 |
| JTextArea(String text,int rows,int columns) | 創(chuàng)建顯示指定初始文本并指定了行列的文本域 |
聊天窗口示例
package Swing; ?
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class LiaoTian extends Frame {
JButton sendBt;
JTextField inputField;
JTextArea chatContent;
public LiaoTian(){
this.setLayout(new BorderLayout());
//創(chuàng)建一個文本域
chatContent=new JTextArea(12,34);
//創(chuàng)建一個滾動面板,將文本域作為顯示條件
JScrollPane showPanel=new JScrollPane(chatContent);
//設(shè)置文本域為不可編輯
chatContent.setEditable(false);
//創(chuàng)建一個面板
JPanel inputPanel=new JPanel();
//創(chuàng)建一個文本框
inputField =new JTextField(20);
//創(chuàng)建一個發(fā)送按鈕
sendBt=new JButton("發(fā)送");
//為按鈕添加事件
sendBt.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//獲取輸入的信息
String content=inputField.getText();
//判斷輸入的信息是否為空
if(content!=null&&!content.trim().equals("")){
chatContent.append("本人:"+content+"\n");
}else{
chatContent.append("聊天信息不能為空"+"\n");
}
inputField.setText("");
}
});
//創(chuàng)建一個標簽
Label label=new Label("聊天信息");
//將標簽添加到Jpanel面板
inputPanel.add(label);
//將按鈕添加到Jpanel面板
inputPanel.add(inputField);
//將滾動面板和JPanel面板添加到JFrame窗口
inputPanel.add(sendBt);
this.add(showPanel,BorderLayout.CENTER);
this.add(inputPanel,BorderLayout.SOUTH);
this.setTitle("聊天窗口");
this.setSize(400,300);
this.setVisible(true);
}
public static void main(String[] args) {
new LiaoTian();
}
}運行結(jié)果

由上可知,我們可以通過JFrame模擬一個簡單的窗口,先通過BorderLayout布局管理器將窗口分為兩個區(qū)域,然后再center區(qū)域放入了一個JScrollPane滾動面板,在滾動面板中添加了一個JTextArea文本域,用于顯示聊天記錄,south區(qū)域放置了一個JPanel面板,在JPanel面板中放置了三個組件,JLabel標簽用于信息說明,JTextField文本框用于輸入用戶的聊天信息,JButton按鈕用于發(fā)送聊天信息。在這里使用的JLabel組件是一個靜態(tài)的組件,用于顯示一行靜態(tài)的文本和圖標,它的作用是信息說明,不接受用戶的輸入,也不能添加事件。
小結(jié)
以上就是我對于Java中如何使用文本框和文本域,如何添加按鈕,如何創(chuàng)建一個聊天窗口的理解,學會創(chuàng)建聊天窗口,可以使系統(tǒng)能夠更加方便與用戶進行交互,提升體驗感。
到此這篇關(guān)于Java詳解聊天窗口的創(chuàng)建流程的文章就介紹到這了,更多相關(guān)Java聊天窗口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot整合MOTT動態(tài)讀取數(shù)據(jù)庫連接信息并連接MQTT服務(wù)端
MQTT是一種輕量級的消息傳輸協(xié)議(Message Queuing Telemetry Transport),旨在實現(xiàn)設(shè)備之間的低帶寬和高延遲的通信,本文給大家介紹了SpringBoot整合MOTT動態(tài)讀取數(shù)據(jù)庫連接信息并連接MQTT服務(wù)端,需要的朋友可以參考下2024-04-04
SpringQuartz定時任務(wù)核心組件JobDetail與Trigger配置
Spring框架與Quartz調(diào)度器的集成提供了強大而靈活的定時任務(wù)解決方案,本文主要介紹了SpringQuartz定時任務(wù)核心組件JobDetail與Trigger配置,具有一定的參考價值,感興趣的可以了解一下2025-04-04
Java利用MYSQL LOAD DATA LOCAL INFILE實現(xiàn)大批量導入數(shù)據(jù)到MySQL
Mysql load data的使用,MySQL的LOAD DATAINFILE語句用于高速地從一個文本文件中讀取行,并裝入一個表中2018-03-03
spring security在分布式項目下的配置方法(案例詳解)
這篇文章主要介紹了spring security在分布式項目下的配置方法,本文通過一個項目案例給大家詳細介紹,通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10
關(guān)于IDEA 2020.3 多窗口視圖丟失的問題
這篇文章主要介紹了關(guān)于IDEA 2020.3 多窗口視圖丟失的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12
SpringBoot整合Sa-Token實現(xiàn)?API?接口簽名安全校驗功能
這篇文章主要介紹了SpringBoot整合Sa-Token實現(xiàn)?API?接口簽名安全校驗功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07
詳解Android系統(tǒng)中的root權(quán)限獲得原理
這篇文章主要介紹了詳解Android系統(tǒng)中的Root權(quán)限獲得原理,安卓基于Linux,所以原理也相當于Linux中的root用戶,需要的朋友可以參考下2015-08-08

