




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
用java语言编一个聊天小程序要求:使用图形用户界面。能实现一个聊天室中多人聊天。可以两人私聊。提示:使用socket通信import java.awt.*;import java.awt.event.*;import javax.swing.*;import .*;import java.io.*;public class test public static void main(String args) EventQueue.invokeLater(new Runnable() public void run() DrawFrame frame = new DrawFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); ); class DrawFrame extends JFrame public DrawFrame() setLocation(100,100); setTitle(我的QQ); setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);/添加菜单项 JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); JMenu edit = new JMenu(菜单); menuBar.add(edit); JMenuItem sset = new JMenuItem(设置); JMenuItem eexit = new JMenuItem(退出); edit.add(sset); edit.addSeparator(); edit.add(eexit); final DrawPanel pan = new DrawPanel(); /添加设置对话框 sset.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) final JFrame jf = new JFrame(设置); jf.setSize(300,150); jf.setLocation(200,200); jf.setResizable(false); jf.setVisible(true); JPanel jp = new JPanel(); final JTextField jt1 = new JTextField(20); final JTextField jt2 = new JTextField(20); final JTextField jt3 = new JTextField(20); jp.add(new JLabel(聊天端口:); jf.add(jp); jp.add(jt1); jp.add(new JLabel(目标地址:); jp.add(jt2); jp.add(new JLabel(文件端口:); jp.add(jt3); JButton jb1 = new JButton(确定); JButton jb2 = new JButton(取消); jp.add(jb1); jp.add(jb2); /设置“设置”按钮 jb1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) try int cat1 = Integer.parseInt(jt1.getText(); pan.setCat1(cat1);/设置对话端口号 int cat2 = Integer.parseInt(jt3.getText(); pan.setCat2(cat2);/设置文件传输端口号 String s = jt2.getText(); pan.setIP(s);/设置IP地址 pan.ls(); catch(Exception e) e.printStackTrace(); jf.dispose();/关闭对话框 ); jb2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) jf.dispose(); ); ); eexit.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) System.exit(0); ); add(pan); pack(); public static final int DEFAULT_WIDTH = 400; public static final int DEFAULT_HEIGHT = 400;class DrawPanel extends JPanel DatagramSocket ds; DatagramPacket dp; DatagramSocket ds1; DatagramPacket dp1; Thread thread; Thread thread1; TextArea textArea1 = new TextArea(10,50); TextArea textArea2 = new TextArea(10,50); JTextField textField = new JTextField(50); static int cat1,cat2; static String IP; public void setCat1(int cat) cat1 = cat; public void setCat2(int cat) cat2 = cat; public void setIP(String ip) IP=ip; /重置端口号 public void ls() try ds = new DatagramSocket(cat1); ds1 = new DatagramSocket(cat2); catch(Exception e) e.printStackTrace(); thread = new Thread(new Runnable() public void run() byte buf = new byte1024;/聊天每次发送文字不能超过1024b DatagramPacket dp = new DatagramPacket(buf,buf.length); while(true) try ds.receive(dp); textArea1.setText(textArea1.getText()+ new String(buf,0,dp.getLength() + rn); catch(Exception e) e.printStackTrace(); ); thread.start(); public DrawPanel() setLayout(new BorderLayout(); JTabbedPane card = new JTabbedPane(); textArea1.setEditable(false); card.add(聊天,textArea1); add(card,BorderLayout.NORTH); JPanel center = new JPanel(); center.setLayout(new FlowLayout(); center.add(new JLabel(昵称:); center.add(textField); add(center,BorderLayout.CENTER); JPanel south = new JPanel(); south.setLayout(new BorderLayout(); south.add(textArea2,BorderLayout.NORTH); JPanel south2 = new JPanel(); south2.setLayout(new FlowLayout(); JButton sent = new JButton(传送文件); JButton receive = new JButton(接收文件); /receive.setEnabled(false); JButton sentMessage = new JButton(发送); south2.add(sent); south2.add(receive); south2.add(sentMessage); add(south,BorderLayout.SOUTH); south.add(south2,BorderLayout.SOUTH); /发送信息的按钮的监听器: sentMessage.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) textArea1.append(textField.getText()+:+textArea2.getText()+n); String s; try s = textField.getText() + : + textArea2.getText(); byte buf = s.getBytes(); dp = new DatagramPacket(buf,buf.length,InetAddress.getByName(IP),cat1); ds.send(dp); textArea2.setText(); catch (Exception ex) ex.printStackTrace(); ); /发送文件的按钮的监听器 sent.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) JFrame f = new JFrame(打开); f.setSize(400,300); JFileChooser chooser = new JFileChooser(); f.add(chooser); int returnVal = chooser.showOpenDialog(f); if(returnVal = JFileChooser.APPROVE_OPTION) textArea1.append(正在传送文件:+chooser.getCurrentDirectory()+ +chooser.getSelectedFile().getName()+n); try byte b = new byte10248; FileInputStream fis = new FileInputStream(chooser.getSelectedFile(); DataInputStream dos =new DataInputStream(fis); dos.read(b); dp1 = new DatagramPacket(b,b.length,InetAddress.getByName(IP),cat2); ds1.send(dp1); catch (Exception e) e.printStackTrace(); ); /接收文件的按钮的监听器: receive.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) JFrame f1 = new JFrame(保存); f1.setSize(400,300); byte buf = new byte10248; DatagramPacket dp1 = new DatagramPacket(buf,buf.length); JFileChooser ch = new JFileChooser(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 染发考试题及答案
- 古汉考试题及答案
- 护理核心制度及安全试题与答案
- 护理人员岗位职责试题(含答案)
- 中西医结合外科学(广州中医药大学)知到智慧树答案
- 黑龙江高级机修木工理论模拟试题(附答案)
- 2025二手设备买卖协议书附二手设备残值回收条款
- 2025地产劳务合作劳务派遣服务合同
- 2025出租屋承包合同协议书-旅游度假区出租屋经营合同
- 盾构噪音控制方法-洞察及研究
- 人教PEP版(2024)新四年级上册 教材解读
- 纪念中国人民抗日战争暨世界反法西斯战争胜利80周年
- 2025四川省高级人民法院招聘聘用制审判辅助人员30人考试备考题库及答案解析
- 加气块砌筑知识培训课件
- 智慧养老服务与管理课件
- 2025年湖南安全技术职业学院招聘考试笔试试题(含答案)
- 配电带电作业工考试试卷与答案
- 2025年河南省机关事业单位工勤技能岗位等级考试(兽医防治员·高级技师/一级)(综合评审技能)历年参考题库含答案详解(5卷)
- 2025年职业技能鉴定考试(地勘钻探工)历年参考题库含答案详解(5套)
- 医院感控知识培训
- 2025年治安管理处罚法知识竞赛试卷及答案
评论
0/150
提交评论