📄 chatclient.java
字号:
package com.hanhf.java;
import java.awt.Color;
import java.awt.Rectangle;
import java.awt.event.FocusEvent;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
public class ChatClient extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JPanel jPanel = null;
private JButton btnStart = null;
private JButton btnStop = null;
private JPanel jPanel1 = null;
private JTextArea txtMessage = null;
private JButton btnSend = null;
private JTextArea txtChatInfo = null;
private Socket socket = null;
private PrintWriter out = null;
private ChatClient outer = this;
private ListenerThread listenerThread = null;
/**
* This method initializes jPanel
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel() {
if (jPanel == null) {
jPanel = new JPanel();
jPanel.setLayout(null);
jPanel.setBounds(new Rectangle(15, 15, 250, 50));
jPanel.setBorder(BorderFactory.createLineBorder(Color.green, 1));
jPanel.add(getBtnStart(), null);
jPanel.add(getJButton(), null);
}
return jPanel;
}
/**
* This method initializes btnStart
*
* @return javax.swing.JButton
*/
private JButton getBtnStart() {
if (btnStart == null) {
btnStart = new JButton();
btnStart.setBounds(new Rectangle(10, 10, 100, 25));
btnStart.setText("连接服务器");
btnStart.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
btnStart.setEnabled(false);
btnStop.setEnabled(true);
txtMessage.dispatchEvent(new FocusEvent(txtMessage,
FocusEvent.FOCUS_GAINED, true));
txtMessage.requestFocusInWindow();
try {
socket = new Socket("127.0.0.1", 9999);
out = new PrintWriter(socket.getOutputStream());
listenerThread = new ListenerThread(socket, txtChatInfo);
listenerThread.start();
} catch (IOException ex) {
JOptionPane.showMessageDialog(outer, "无法连接服务器!");
}
}
});
}
return btnStart;
}
/**
* This method initializes btnStop
*
* @return javax.swing.JButton
*/
private JButton getJButton() {
if (btnStop == null) {
btnStop = new JButton();
btnStop.setBounds(new Rectangle(120, 10, 100, 25));
btnStop.setEnabled(false);
btnStop.setText("断开连接");
btnStop.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
btnStart.setEnabled(true);
btnStop.setEnabled(false);
out.close();
listenerThread.end();
}
});
}
return btnStop;
}
/**
* This method initializes jPanel1
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel1() {
if (jPanel1 == null) {
jPanel1 = new JPanel();
jPanel1.setLayout(null);
jPanel1.setBounds(new Rectangle(15, 75, 250, 170));
jPanel1.setBorder(BorderFactory.createLineBorder(Color.green, 1));
jPanel1.add(getTxtMessage(), null);
jPanel1.add(getBtnSend(), null);
jPanel1.add(getTxtChatInfo(), null);
}
return jPanel1;
}
/**
* This method initializes txtMessage
*
* @return javax.swing.JTextArea
*/
private JTextArea getTxtMessage() {
if (txtMessage == null) {
txtMessage = new JTextArea();
txtMessage.setBounds(new Rectangle(10, 100, 230, 25));
txtMessage.setBackground(new Color(255, 255, 153));
txtMessage
.setBorder(BorderFactory.createLineBorder(Color.green, 1));
}
return txtMessage;
}
/**
* This method initializes btnSend
*
* @return javax.swing.JButton
*/
private JButton getBtnSend() {
if (btnSend == null) {
btnSend = new JButton();
btnSend.setText("发送");
btnSend.setBounds(new Rectangle(10, 135, 100, 25));
btnSend.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
try {
out.println(txtMessage.getText());
out.flush();
txtChatInfo.append("我方说:" + txtMessage.getText()
+ "\r\n");
} catch (Exception ex) {
JOptionPane.showMessageDialog(outer, "服务已停止!");
}
}
});
}
return btnSend;
}
/**
* This method initializes txtChatInfo
*
* @return javax.swing.JTextArea
*/
private JTextArea getTxtChatInfo() {
if (txtChatInfo == null) {
txtChatInfo = new JTextArea();
txtChatInfo.setBounds(new Rectangle(10, 10, 230, 80));
txtChatInfo.setBorder(BorderFactory
.createLineBorder(Color.green, 1));
}
return txtChatInfo;
}
/**
* @param args
*/
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
ChatClient thisClass = new ChatClient();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}
/**
* This is the default constructor
*/
public ChatClient() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(300, 280);
this.setContentPane(getJContentPane());
this.setTitle("聊天客户端");
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJPanel(), null);
jContentPane.add(getJPanel1(), null);
}
return jContentPane;
}
} // @jve:decl-index=0:visual-constraint="10,10"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -