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

📄 main.java

📁 一个聊天室的原代码
💻 JAVA
字号:
/*
 * Created on 2004-12-11
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
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;

/**
 * @author Lance
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class Main extends JFrame implements ChatServerListener{
	
	ChatServerImpl server=ChatServerImpl.getInstance();
	JTextArea textArea;
	JMenuBar menuBar;
	JToolBar toolBar;
	StartServerAction startAction=new StartServerAction();
	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 setupToolBar() {
		// TODO Auto-generated method stub
		toolBar=new JToolBar();
		JButton button=null;
		addTool(toolBar, startAction);
		addTool(toolBar, stopAction);
		
		getContentPane().add(toolBar, BorderLayout.NORTH);
	}

	/**
	 * 
	 */
	private void setupMenu() {
		// TODO Auto-generated method stub
		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);
	}
	
	JButton addTool(//此方法内容似乎有问题,b不知从何而来
			JToolBar toolBar,
			AbstractAction action){
		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 StartServerAction extends AbstractAction{
		public StartServerAction(){
			super("启动");
			putValue(
					Action.SMALL_ICON,
					new ImageIcon(getClass().getResource("image/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 + -