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

📄 main.java

📁 编了一个简单的聊天器
💻 JAVA
字号:
//Main.java
package chatserver;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
import javax.swing.KeyStroke;

public class Main extends JFrame implements ChatServerListener {
	ChatServerImpl server = ChatServerImpl.getInstance();
	JTextArea textArea;
	JMenuBar menuBar;
	JToolBar toolBar;
	StarServerAction startAction = new StarServerAction();
	StopServerAction stopAction = new StopServerAction();
	public static void main(String[] args) {
		Main main = new Main();
		main.show();
	}
	public Main() {
		super("聊天-服务器");
		setSize(300, 500);
		layoutComponents();
	}
	private void layoutComponents() {
		setupMenu();
		setupToolBar();
		textArea = new JTextArea();
		textArea.setSize(200, 300);
		textArea.setEditable(false);
		JScrollPane scrollPane = new JScrollPane(textArea);
		getContentPane().add(scrollPane, BorderLayout.CENTER);
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
	}
	private void setupMenu() {
		menuBar = new JMenuBar();
		JMenuItem startServer = new JMenuItem(startAction);
		JMenuItem stopServer = new JMenuItem(stopAction);
		JMenuItem exit = new JMenuItem("退出");
		exit.addActionListener(new AbstractAction() {
			public void actionPerformed(ActionEvent evt) {
				exit();
			}

		});
		JMenu server = new JMenu("服务器");
		server.add(startServer);
		server.add(stopServer);
		server.add(exit);
		menuBar.add(server);

		setJMenuBar(menuBar);
	}
	private void setupToolBar() {
		toolBar = new JToolBar();

		addTool(toolBar, startAction);
		addTool(toolBar, stopAction);

		getContentPane().add(toolBar, BorderLayout.NORTH);
	}

	JButton addTool(
		JToolBar toolBar,
		AbstractAction action) {
		JButton b = new JButton();
		b.setAction(action);
		b.setText(null);
		toolBar.add(b);
		return b;
	}
	private void exit() {
		try {
			server.stop();
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.exit(0);
	}
	public void serverEvent(ChatServerEvent evt) {
		textArea.append(evt.getMessage() + "\n");
	}

	class StarServerAction extends AbstractAction {
		public StarServerAction() {
			super("启动");
			putValue(
				Action.SMALL_ICON,
				new ImageIcon(getClass().getResource("images/start.gif")));
			putValue(Action.SHORT_DESCRIPTION, "启动聊天服务器");
			putValue(
				Action.ACCELERATOR_KEY,
				KeyStroke.getKeyStroke("control A"));
		}
		public void actionPerformed(ActionEvent evt) {
			try {
				server.addListener(Main.this);
				textArea.setText("");
				server.start();
				stopAction.setEnabled(true);
				this.setEnabled(false);
			} catch (Exception ex) {
				textArea.append("服务器启动错误\n");
				server.removeListener(Main.this);
				ex.printStackTrace();
				return;
			}
		}
	}//End of InnerClass StarServerAction 
	
	class StopServerAction extends AbstractAction {
		public StopServerAction() {
			super("停止");
			putValue(
				Action.SMALL_ICON,
				new ImageIcon(getClass().getResource("images/stop.gif")));
			putValue(Action.SHORT_DESCRIPTION, "停止聊天服务器");
			putValue(
				Action.ACCELERATOR_KEY,
				KeyStroke.getKeyStroke("control O"));
			this.setEnabled(false);
		}
		public void actionPerformed(ActionEvent arg0) {
			try {
				server.stop();
				server.removeListener(Main.this);
				startAction.setEnabled(true);
				this.setEnabled(false);
			} catch (Exception e) {
				textArea.append("服务停止错误\n");
				e.printStackTrace();
				return;
			}
		}
	}//End of InnerClass StopServerAction
}//END CLASS

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -