⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chatclient.java

📁 用SOCKET和SWING进行设计
💻 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 + -