java chat_使用 Java 创建聊天客户端-1
1.聊天客戶端文本框的搭建.
項目截圖:java project
代碼:
(1).ChatManager.java
package com.nantian.javachatclient.main;
import com.nantian.javachatclient.view.MainWindow;
public class ChatManager {
//將類單例化的步驟就是講他的構造方法變成private
//ChatManager就會有唯一的實例
private ChatManager() {}
private static final ChatManager instance=new ChatManager();
public static ChatManager getChatManager() {
return instance;
}
//具體實現連接服務器的操作
public void connect(String ip) {
}
//"發送"按鈕發送內容函數
public void send(String out) {
}
//界面中只能向chatManager發送數據,那么接收到數據后怎樣放到界面上呢?
//需要對MainWindow有個引用,并為它實現setWindow方法
MainWindow window;
public void setWindow(MainWindow window) {
this.window=window;
//傳遞之后
window.appendText("文本框已經和ChatManager綁定了!");
}
}
(2).StartClient.java
package com.nantian.javachatclient.main;
import java.awt.EventQueue;
import com.nantian.javachatclient.view.MainWindow;
public class StartClient {
/**
* 將窗體主方法放到了這里
* @param args
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MainWindow frame = new MainWindow();
frame.setVisible(true);
//創建window的時候,對MainWindow有個引用
ChatManager.getChatManager().setWindow(frame);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
(3).MainWindow.java
new -->project-->web builder-->JFrame(需要下載web builder插件!)
package com.nantian.javachatclient.view;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import com.nantian.javachatclient.main.ChatManager;
import javax.swing.JTextArea;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class MainWindow extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private JPanel contentPane;
//文本控件聲明到類中,讓他作為類的變量
JTextArea txt;
private JTextField IP;
private JTextField send;
/**
* Create the frame.
*/
public MainWindow() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
txt = new JTextArea();
txt.setText("Ready...");
IP = new JTextField();
IP.setText("127.0.0.1");
IP.setColumns(10);
JButton button = new JButton("連接到服務器");
button.addMouseListener(new MouseAdapter() {
//mouse-->clicked自動創建的代碼
@Override
public void mouseClicked(MouseEvent e) {
//為"連接到服務器"按鈕添加動作
//使用函數把它和這個按鈕的監聽事件綁定起來
ChatManager.getChatManager().connect(IP.getText());
}
});
send = new JTextField();
send.setText("你好!");
send.setColumns(10);
JButton button_1 = new JButton("發送");
button_1.addMouseListener(new MouseAdapter() {
//為"發送"按鈕添加動作
@Override
public void mouseClicked(MouseEvent e) {
//當前文本發送呢內容
ChatManager.getChatManager().send(send.getText());
appendText("我說:"+send.getText());
//發送出去后,需要將當前文本框清空
send.setText("");
}
});
GroupLayout gl_contentPane = new GroupLayout(contentPane);
gl_contentPane.setHorizontalGroup(
gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(Alignment.TRAILING, gl_contentPane.createSequentialGroup()
.addGroup(gl_contentPane.createParallelGroup(Alignment.TRAILING)
.addComponent(txt, GroupLayout.DEFAULT_SIZE, 414, Short.MAX_VALUE)
.addGroup(Alignment.LEADING, gl_contentPane.createSequentialGroup()
.addComponent(IP)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(button))
.addGroup(gl_contentPane.createSequentialGroup()
.addComponent(send, GroupLayout.DEFAULT_SIZE, 295, Short.MAX_VALUE)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(button_1, GroupLayout.PREFERRED_SIZE, 129, GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
gl_contentPane.setVerticalGroup(
gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(IP, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(button))
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(txt, GroupLayout.DEFAULT_SIZE, 193, Short.MAX_VALUE)
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(send, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(button_1)))
);
contentPane.setLayout(gl_contentPane);
}
public void appendText(String in) {
txt.append("\n"+in);
}
}
操作截圖:
=============================================================================================================
框架已搭建完成,聊天客戶端的核心內容見:使用 Java 創建聊天客戶端-2
總結
以上是生活随笔為你收集整理的java chat_使用 Java 创建聊天客户端-1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java开发学不会_JAVA学不会,快期
- 下一篇: java异常处理框架_深入探索 高效的J