📄 chatclient.java
字号:
package chat;
import javax.swing.SwingUtilities;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.Rectangle;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.io.*;
import java.net.*;
public class ChatClient extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JLabel jLabel = null;
private JLabel jLabel1 = null;
JTextField jTextField = null;
private JTextField jTextField1 = null;
private JButton jButton = null;
private JButton jButton1 = null;
// 服务器端的服务端口。
public static final int SERVERPORT = 9999;
public static Socket s;
public BufferedReader in;
public PrintWriter out;
private JLabel jLabel2 = null;
/**
* This method initializes jTextField
*
* @return javax.swing.JTextField
*/
private JTextField getJTextField() {
if (jTextField == null) {
jTextField = new JTextField();
jTextField.setBounds(new Rectangle(137, 37, 126, 22));
jTextField.setEditable(false);
}
return jTextField;
}
/**
* This method initializes jTextField1
*
* @return javax.swing.JTextField
*/
private JTextField getJTextField1() {
if (jTextField1 == null) {
jTextField1 = new JTextField();
jTextField1.setBounds(new Rectangle(137, 76, 126, 22));
}
return jTextField1;
}
/**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setBounds(new Rectangle(189, 133, 73, 24));
jButton.setText("发送");
jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
out.println(jTextField1.getText());
}
});
}
return jButton;
}
/**
* This method initializes jButton1
*
* @return javax.swing.JButton
*/
private JButton getJButton1() {
if (jButton1 == null) {
jButton1 = new JButton();
jButton1.setBounds(new Rectangle(65, 134, 69, 23));
jButton1.setText("关闭");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("actionPerformed()"); // TODO
// Auto-generated
// Event stub
// actionPerformed()
System.exit(0);
}
});
}
return jButton1;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
SwingUtilities.invokeLater(new Runnable() {
public void run() {
ChatClient thisClass = new ChatClient();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
ReadThread read1=new ReadThread(thisClass);
read1.start();
}
});
}
/**
* This is the default constructor
*/
public ChatClient() {
super();
try{
// 建立连接套接字。
s = new Socket("localhost", SERVERPORT);
System.out.println("socket = " + s);
// 新建网络连接的输入流。
in = new BufferedReader(new InputStreamReader(s
.getInputStream()));
// 新建网络连接的自动刷新的输出流。
out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(s.getOutputStream())), true);
}
catch(IOException e)
{}
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(342, 234);
this.setContentPane(getJContentPane());
this.setTitle("客户端");
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jLabel2 = new JLabel();
jLabel2.setBounds(new Rectangle(30, 11, 235, 18));
jLabel2.setText("Enter a string, Enter BYE to exit!");
jLabel1 = new JLabel();
jLabel1.setBounds(new Rectangle(32, 76, 72, 18));
jLabel1.setText("发送信息");
jLabel = new JLabel();
jLabel.setBounds(new Rectangle(32, 37, 71, 18));
jLabel.setText("显示消息");
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(jLabel, null);
jContentPane.add(jLabel1, null);
jContentPane.add(getJTextField(), null);
jContentPane.add(getJTextField1(), null);
jContentPane.add(getJButton(), null);
jContentPane.add(getJButton1(), null);
jContentPane.add(jLabel2, null);
}
return jContentPane;
}
} // @jve:decl-index=0:visual-constraint="10,10"
class ReadThread extends Thread{
ChatClient thisClass;
public ReadThread(ChatClient Class)
{
super();
thisClass=Class;
}
public void run()
{
try {
while (true) {
// 从网络连接读取一行,即接收服务器端的数据。
String str = thisClass.in.readLine();
// 如果接收到的数据为空(如果直接按Enter,不是空数据),则退出循环,关闭连接。
if (str == null)
thisClass.jTextField.setText("");
if (str.trim().equals("BYE"))
{
System.exit(0);
}
thisClass.jTextField.setText(str);
}
} catch (IOException e) {
System.err.println("IOException");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -