




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、java聊天室源代码-课程设计java聊天室源代码import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import .*;import java.io.*;/* 聊天服务端的主框架类*/public class ChatServer extends JFrame implements ActionListenerpublic static int port = 8888;/服务端的侦听端口ServerSocket serverSocket;/服务端SocketImag
2、e icon;/程序图标JComboBox combobox;/选择发送消息的接受者JTextArea messageShow;/服务端的信息显示JScrollPane messageScrollPane;/信息显示的滚动条JTextField showStatus;/显示用户连接状态JLabel sendToLabel,messageLabel;JTextField sysMessage;/服务端消息的发送JButton sysMessageButton;/服务端消息的发送按钮UserLinkList userLinkList;/用户链表/建立菜单栏JMenuBar jMenuBar = n
3、ew JMenuBar(); /建立菜单组JMenu serviceMenu = new JMenu (服务(V); /建立菜单项JMenuItem portItem = new JMenuItem (端口设置(P);JMenuItem startItem = new JMenuItem (启动服务(S);JMenuItem stopItem=new JMenuItem (停止服务(T);JMenuItem exitItem=new JMenuItem (退出(X);JMenu helpMenu=new JMenu (帮助(H);JMenuItem helpItem=new JMenuItem
4、 (帮助(H);/建立工具栏JToolBar toolBar = new JToolBar();/建立工具栏中的按钮组件JButton portSet;/启动服务端侦听JButton startServer;/启动服务端侦听JButton stopServer;/关闭服务端侦听JButton exitButton;/退出按钮/框架的大小Dimension faceSize = new Dimension(400, 600);ServerListen listenThread;JPanel downPanel ;GridBagLayout girdBag;GridBagConstraints g
5、irdBagCon;/* * 服务端构造函数 */public ChatServer()init();/初始化程序/添加框架的关闭事件处理this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.pack();/设置框架的大小this.setSize(faceSize);/设置运行时窗口的位置Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();this.setLocation( (int) (screenSize.width - faceSize.getWi
6、dth() / 2, (int) (screenSize.height - faceSize.getHeight() / 2);this.setResizable(false);this.setTitle(聊天室服务端); /设置标题/程序图标icon = getImage(icon.gif);this.setIconImage(icon); /设置程序图标show();/为服务菜单栏设置热键VserviceMenu.setMnemonic(V);/为端口设置快捷键为ctrl+pportItem.setMnemonic (P); portItem.setAccelerator (KeyStro
7、ke.getKeyStroke (KeyEvent.VK_P,InputEvent.CTRL_MASK);/为启动服务快捷键为ctrl+sstartItem.setMnemonic (S); startItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_S,InputEvent.CTRL_MASK);/为端口设置快捷键为ctrl+TstopItem.setMnemonic (T); stopItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_T,InputEvent.CT
8、RL_MASK);/为退出设置快捷键为ctrl+xexitItem.setMnemonic (X); exitItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_X,InputEvent.CTRL_MASK);/为帮助菜单栏设置热键HhelpMenu.setMnemonic(H);/为帮助设置快捷键为ctrl+phelpItem.setMnemonic (H); helpItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_H,InputEvent.CTRL_MASK);/
9、* * 程序初始化函数 */public void init()Container contentPane = getContentPane();contentPane.setLayout(new BorderLayout();/添加菜单栏serviceMenu.add (portItem);serviceMenu.add (startItem);serviceMenu.add (stopItem);serviceMenu.add (exitItem);jMenuBar.add (serviceMenu); helpMenu.add (helpItem);jMenuBar.add (helpM
10、enu); setJMenuBar (jMenuBar);/初始化按钮portSet = new JButton(端口设置);startServer = new JButton(启动服务);stopServer = new JButton(停止服务 );exitButton = new JButton(退出 );/将按钮添加到工具栏toolBar.add(portSet);toolBar.addSeparator();/添加分隔栏toolBar.add(startServer);toolBar.add(stopServer);toolBar.addSeparator();/添加分隔栏toolB
11、ar.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.addActionLis
12、tener(this);/添加按钮的事件侦听portSet.addActionListener(this);startServer.addActionListener(this);stopServer.addActionListener(this);exitButton.addActionListener(this);combobox = new JComboBox();combobox.insertItemAt(所有人,0);combobox.setSelectedIndex(0);messageShow = new JTextArea();messageShow.setEditable(f
13、alse);/添加滚动条messageScrollPane = new JScrollPane(messageShow,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);messageScrollPane.setPreferredSize(new Dimension(400,400);messageScrollPane.revalidate();showStatus = new JTextField(35);showStatus.setEditable(false);sysM
14、essage = new JTextField(24);sysMessage.setEnabled(false);sysMessageButton = new JButton();sysMessageButton.setText(发送);/添加系统消息的事件侦听sysMessage.addActionListener(this);sysMessageButton.addActionListener(this);sendToLabel = new JLabel(发送至:);messageLabel = new JLabel(发送消息:);downPanel = new JPanel();gird
15、Bag = new GridBagLayout();downPanel.setLayout(girdBag);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 0;girdBagCon.gridy = 0;girdBagCon.gridwidth = 3;girdBagCon.gridheight = 2;girdBagCon.ipadx = 5;girdBagCon.ipady = 5;JLabel none = new JLabel( );girdBag.setConstraints(none,girdBagCon);down
16、Panel.add(none);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 0;girdBagCon.gridy = 2;girdBagCon.insets = new Insets(1,0,0,0);girdBagCon.ipadx = 5;girdBagCon.ipady = 5;girdBag.setConstraints(sendToLabel,girdBagCon);downPanel.add(sendToLabel);girdBagCon = new GridBagConstraints();girdBagCon
17、.gridx =1;girdBagCon.gridy = 2;girdBagCon.anchor = GridBagConstraints.LINE_START;girdBag.setConstraints(combobox,girdBagCon);downPanel.add(combobox);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 0;girdBagCon.gridy = 3;girdBag.setConstraints(messageLabel,girdBagCon);downPanel.add(messageLa
18、bel);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 1;girdBagCon.gridy = 3;girdBag.setConstraints(sysMessage,girdBagCon);downPanel.add(sysMessage);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 2;girdBagCon.gridy = 3;girdBag.setConstraints(sysMessageButton,girdBagCon);downPanel.a
19、dd(sysMessageButton);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 0;girdBagCon.gridy = 4;girdBagCon.gridwidth = 3;girdBag.setConstraints(showStatus,girdBagCon);downPanel.add(showStatus);contentPane.add(messageScrollPane,BorderLayout.CENTER);contentPane.add(downPanel,BorderLayout.SOUTH);/
20、关闭程序时的操作this.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)stopService();System.exit(0););/* * 事件处理 */public void actionPerformed(ActionEvent e) Object obj = e.getSource();if (obj = startServer | obj = startItem) /启动服务端startService();else if (obj = stopServer | obj = s
21、topItem) /停止服务端int j=JOptionPane.showConfirmDialog(this,真的停止服务吗?,停止服务,JOptionPane.YES_OPTION,JOptionPane.QUESTION_MESSAGE);if (j = JOptionPane.YES_OPTION)stopService();else if (obj = portSet | obj = portItem) /端口设置/调出端口设置的对话框PortConf portConf = new PortConf(this);portConf.show();else if (obj = exitB
22、utton | obj = exitItem) /退出程序int j=JOptionPane.showConfirmDialog(this,真的要退出吗?,退出,JOptionPane.YES_OPTION,JOptionPane.QUESTION_MESSAGE);if (j = JOptionPane.YES_OPTION)stopService();System.exit(0);else if (obj = helpItem) /菜单栏中的帮助/调出帮助对话框Help helpDialog = new Help(this);helpDialog.show();else if (obj =
23、 sysMessage | obj = sysMessageButton) /发送系统消息sendSystemMessage();/* * 启动服务端 */public void startService()tryserverSocket = new ServerSocket(port,10);messageShow.append(服务端已经启动,在+port+端口侦听.n);startServer.setEnabled(false);startItem.setEnabled(false);portSet.setEnabled(false);portItem.setEnabled(false)
24、;stopServer .setEnabled(true);stopItem .setEnabled(true);sysMessage.setEnabled(true);catch (Exception e)/System.out.println(e);userLinkList = new UserLinkList();listenThread = new ServerListen(serverSocket,combobox,messageShow,showStatus,userLinkList);listenThread.start();/* * 关闭服务端 */public void stopService()try/向所有人发送服务器关闭的消息sendStopToAll();listenThread.isStop = true;serverSocket.close();int count = userLinkList.getCount();int i =0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 事业单位服务合同管理流程
- 大型活动食堂餐饮服务租赁合同
- 万科物业租户合同管理协议2025
- 河南省洛阳市2024-2025学年高二下学期期中考试历史试卷(含答案)
- 2024-2025学年度江西省南昌中学(三经路校区)高一下学期期中考试历史试题(含答案)
- 江苏省淮安市2025届高三11月第一次调研测试-生物试题(含答案)
- 精细专利代理人合作协议
- 初中数学探索三角形全等的条件第1课时课件2024-2025学年北师大版数学七年级下册
- 第9课 辽、西夏与北宋并立 教学设计-2024-2025学年统编版(2024)七年级历史下册
- 英语Unit 3 This is Miss Li教案及反思
- 客人醉酒服务流程
- 财政局保密知识讲座
- 克罗恩病 护理查房课件
- 2024年贵州路桥集团招聘笔试参考题库含答案解析
- 茶叶生产许可证审查细则
- 课堂气氛的营造
- 一年级数学上册找规律试题(A4打印版)
- 仪表工职业规划书
- 养老护理员心理培训课件
- 全球养老轻资产创投趋势报告
- 紫罗兰永恒花园
评论
0/150
提交评论