第1个回答 2009-12-22
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.net.*;
import java.io.*;
/*
*聊天室服务的主框架类
*/
public class ChatServer extends JFrame implements ActionListener{
public static int port=8888;//服务端的侦听端口
ServerSocket serverSocket;//服务端Socket
Image icon;//程序图标
JComboBox combabox;//选择发送消息的接受者
JTextArea messageShow;//服务端的信息显示
JScrollPane messageScrollPane;//信息的滚动条
JtextField showStatus;//显示用户连接状态
JLabel sendToLabel,messageLabel;
JTextField sysMessage;//服务端消息的发送
JButton sysMessageButton;//服务器消息的发送按钮
UserLinkList userLinkList;//用户链表
//建立菜单栏
JMenuBar jMenuBar=new JMenuBar();
//建立菜单组
JMenu serviceMenu=new JMenu("服务(V)");
//建立菜单项
JMenuItem portItem=new JMenuItem("端口设置(p)");
JMenuItem startItem=new JMenuItem("启动服务(s)");
JMenuItem stopItem=new JMenuItem("停止服务(T)");
JMenu helpMenu=JMenu("帮助(H)");
JMenuItem helpMenu=new JMenuItem("帮助(H)");
//建立工具栏
JToolBar toolBar=new JToolBar;
//建立工具栏中的按钮
JButton portSet;//启动服务端侦听
JButton startServer;//启动服端务侦听
JButton stopServer;//关闭服务端侦听
JButton exitButton;//退出按钮
//框架的大小
Dimension faceSize=new Dimension(400,600);
SeverListenThresd ListenThresd;
JPanel downPanel;
GridBagLayout gridBag;
GridBagConstraints gridBagCon;
/**
*服务端构造函数
*/
public ChatServer()
init();//初始化程序
//添加框架的关闭事件处理
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(faceSize);
//设置运行时窗口的位置
Dimension screenSize=
Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation((int)(screenSize.width-faceSize())
/2,(int)(screenSize.height-faceSize.getHeight())/2);
this.setResizable(false);
this.setTitle("聊天室服务端");//设置标题
//程序图标
icon=getImage("icon.gif");
this.setIconImage(icon);//设置程序图标
show();
//为服务菜单栏设置热键'V'
serviceMenu.setMnemonic('V')
//为端口设置快捷键Ctrl+P
portItem.setMnemonic('P');
portItem.setAccelerator(KeyStroke.getKeyStroke
(KeyEvent.VK_P,InputEvent.CTRL_MASK));
//为启动服务快捷键为Ctrl+S
startItem.setMnemonic('S');
startItem.setAccelerator(KeyStroke.getKeyStroke
(KeyEvent.VK_S,InputEvent.CTRL_MASK));
//为端口设置快捷键Ctrl+T
stopItem.setMnemonic('T');
stopItem.setAccelerator(KeyStroke.getKeyStroke
(KeyEvent.VK_T,InputEvent.CTRL_MASK));
//为退出设置快捷键为Ctrl+X
exitItem.setMnemonic('X');
exitItem.setAccelerator(KeyStroke.getKeyStroke
(KeyEvent.VK_X,InputEvent.CTRL_MASK));
//为帮助菜单栏设置热键'H'
helpMenu.setMnemonic('H');
//为帮助设置快捷键为Ctrl+H
helpItem.setMnemonic('p');
helpItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
}
/**
*程序初始化函数
*/
public void init(){
Container contentPane=getContentPane();
contentPane.setLayout(new BoraderLayout());
//添加菜单栏
serviceMenu.add(portItem);
serviceMenu.add(startItem);
serviceMenu.add(stopItem);
serviceMenu.add(exitItem);
jMenuBar.add(serviceMenu);
helpMenu.add(helpItem);
jMenubar.add(helpMenu);
setJmenuBar(jMenuBar);
//初始化按钮
portSet=new JButton("端口服务");
startServer=new JButton("启动服务");
stopServer=new JButton("停止服务");
exitButton=new JButton("退出");
//将按钮添加到工具栏
toolBar.add(portSet);
toolBar.addSeparator();//添加分隔栏
toolBar.add(starServer);
toolBar.add(stopServer);
toolBar.addSeparator();//添加分隔栏
toolBar.add(exitButton);
contentPane.add(toolBar,BorderLayout.NORTH);
//初始时,令停止服务按钮不可用
stopServer.setEnabled(false);
stopItem.setEnabled(false);
//为菜单栏添加事件监听
portItem.addActionListener(this);
startItem.addActionListener(this);
stopItem.addActionListener(this);
exitItem.addActionListener(this);
helpItem.addActionListener(this);
//添加按钮的事件侦听
portSet.addActionListener(this);
startServer.addActionListener(this);
stopServer.addActionListener(this);
exitButton.addActionListener(this);
combobox=new JComboBox();
conbobox.inserItemAt("所有人",0);
combobox.setSelectedIndex(0);
messageShow=new JTextArea();
messageShow.setEditable(false);//添加滚动条
messageScrollpane =new JScrollPane(messageShow,
JScorellpane.VETICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_AS_NEEDED);