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

📄 chatserver.java

📁 用java写的简单聊天器....初学者有帮助的
💻 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.ServerSocket;
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 ChatServer 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 ChatServer 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 {
						ServerSocket server = new ServerSocket(9999);
						socket = server.accept();
						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() {
				ChatServer thisClass = new ChatServer();
				thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				thisClass.setVisible(true);
			}
		});
	}

	/**
	 * This is the default constructor
	 */
	public ChatServer() {
		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 + -