Java詳解聊天窗口的創(chuàng)建流程
Swing組件
JPanel
JPanel和AWT中的Panel組件使用方法基本一致,是一個(gè)無邊框,不能被移動,放大,縮小,或者關(guān)閉面板,它的默認(rèn)布局管理器是FlowLayout,也可以用JPanel帶參數(shù)的構(gòu)造函數(shù)JPanel(LayoutManager layout)或者它的setLayout()方法為其制定布局管理器。
JScrollPane
JScrollPane是一個(gè)帶有滾動條的面板容器,而且這個(gè)面板只能添加一個(gè)組件,如果想在面板中添加多個(gè)組件,要把組件添加到JPanel中,然后將JPanel添加到JScrollPane中。
JScrollPane的常用構(gòu)造方法
JScrollPane()//創(chuàng)建一個(gè)空的JScrollPane面板 JScrollPane(Component view)//創(chuàng)建一個(gè)顯示指定組件的JScrollPane面板,只要組件的內(nèi)容超過視圖大小就會顯示水平和垂直滾動條 JScrollPane(Component view,int vsbPolicy,int hsbPolicy)//創(chuàng)建一個(gè)顯示指定容器并具有指定滾動條策略的JScrollPane。參數(shù)vsbPolicy和hsbPolicy分別表示垂直滾動條策略和水平滾動條策略,指定為SCrollPaneConstants的靜態(tài)常量。
JScrollPane的方法
void setHorizontalBarPolicy(int policy)//指定水平滾動條策略,即水平滾動條何時(shí)顯示在滾動面板上 void setVerticalBarPolicy(int policy)//指定垂直滾動條策略,即垂直滾動條何時(shí)顯示在滾動面板上 void setViewportView(Component view)//設(shè)置在滾動面板顯示的組件 void setHorizontalBarPolicy(int policy)//指定水平滾動條策略,即水平滾動條何時(shí)顯示在滾動面板上 void setVerticalBarPolicy(int policy)//指定垂直滾動條策略,即垂直滾動條何時(shí)顯示在滾動面板上 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)建一個(gè)滾動面板 JScrollPane scrollPane=new JScrollPane(); //設(shè)置水平滾動條策略,---滾動條一直顯示 scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); //設(shè)置垂直滾動條策略----滾動條需要時(shí)顯示 scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); //定義一個(gè)面板 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); //將一個(gè)按鈕添加到內(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),它們有一個(gè)共同的父類JTextComponent。這是一個(gè)抽象類,提供了文本組件常用的方法。
文本組件的常用方法
方法描述 | 功能說明 |
---|---|
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)容替換當(dāng)前選中的內(nèi)容 |
文本框(JTextField)
只能接收單行文本的輸入,文本框常用的構(gòu)造方法
方法描述 | 功能說明 |
---|---|
JTextField() | 創(chuàng)建一個(gè)空的文本框,初始字符串為null |
JTextField(int columns) | 創(chuàng)建一個(gè)具有指定列數(shù)的文本框,初始字符串為null |
JTextField(String text) | 創(chuàng)建一個(gè)顯示指定初始字符串的文本框 |
JTextField(String text,intcolumn) | 創(chuàng)建一個(gè)具有指定列數(shù)并顯示指定初始字符串的文本框 |
文本域(JTextArea)
能接收多行的文本輸入,可以設(shè)置區(qū)域的行數(shù)和列數(shù),常用的構(gòu)造方法
方法描述 | 功能說明 |
---|---|
JTextArea(String text) | 創(chuàng)建顯示指定初始字符串的文本域 |
JTextArea() | 創(chuàng)建一個(gè)空的文本域 |
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)建一個(gè)文本域 chatContent=new JTextArea(12,34); //創(chuàng)建一個(gè)滾動面板,將文本域作為顯示條件 JScrollPane showPanel=new JScrollPane(chatContent); //設(shè)置文本域?yàn)椴豢删庉? chatContent.setEditable(false); //創(chuàng)建一個(gè)面板 JPanel inputPanel=new JPanel(); //創(chuàng)建一個(gè)文本框 inputField =new JTextField(20); //創(chuàng)建一個(gè)發(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)建一個(gè)標(biāo)簽 Label label=new Label("聊天信息"); //將標(biāo)簽添加到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(); } }
運(yùn)行結(jié)果
由上可知,我們可以通過JFrame模擬一個(gè)簡單的窗口,先通過BorderLayout布局管理器將窗口分為兩個(gè)區(qū)域,然后再center區(qū)域放入了一個(gè)JScrollPane滾動面板,在滾動面板中添加了一個(gè)JTextArea文本域,用于顯示聊天記錄,south區(qū)域放置了一個(gè)JPanel面板,在JPanel面板中放置了三個(gè)組件,JLabel標(biāo)簽用于信息說明,JTextField文本框用于輸入用戶的聊天信息,JButton按鈕用于發(fā)送聊天信息。在這里使用的JLabel組件是一個(gè)靜態(tài)的組件,用于顯示一行靜態(tài)的文本和圖標(biāo),它的作用是信息說明,不接受用戶的輸入,也不能添加事件。
小結(jié)
以上就是我對于Java中如何使用文本框和文本域,如何添加按鈕,如何創(chuàng)建一個(gè)聊天窗口的理解,學(xué)會創(chuàng)建聊天窗口,可以使系統(tǒng)能夠更加方便與用戶進(jìn)行交互,提升體驗(yàn)感。
到此這篇關(guān)于Java詳解聊天窗口的創(chuàng)建流程的文章就介紹到這了,更多相關(guān)Java聊天窗口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Boot 利用WebUploader進(jìn)行文件上傳功能
本文的重點(diǎn)是給大家介紹在Spring Boot項(xiàng)目中利用WebUploader如何進(jìn)行文件上傳,本文通過示例代碼給大家介紹,需要的朋友參考下吧2018-03-03spring?boot微服務(wù)場景下apollo加載過程解析
apollo?是一個(gè)開源的配置中心項(xiàng)目,功能很強(qiáng)大,apollo?本身的配置項(xiàng)并不復(fù)雜,但是因?yàn)榕渲玫穆窂教貏e多,非常容易搞混了,?所以本文試圖聚焦?spring-boot?的場景,在?spring-boot?微服務(wù)場景下,搞清楚?apollo-client的加載過程2022-02-02配置pom.xml用maven打包java工程的方法(推薦)
下面小編就為大家?guī)硪黄渲胮om.xml用maven打包java工程的方法(推薦)。小編覺得挺不錯的, 現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-06-06java開發(fā)Activiti進(jìn)階篇流程實(shí)例詳解
這篇文章主要為大家介紹了java開發(fā)Activiti進(jìn)階篇流程實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08