已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国叶黄素酯龙头企业战略动向与标杆案例解析报告
- 2026中国叶黄素酯行业供应链优化与风险管理研究报告
- 2026中国污水处理设备行业技术标准与出口潜力研究报告
- 2026中国游戏行业供需分析及新兴市场投资布局规划
- 2026人工智能客服系统情感识别研究企业服务更建议
- 2026中国咖啡连锁品牌三四线城市扩张战略与本土化调整
- 2026中国智能消防系统制造行业市场现状供需分析及投资评估规划分析研究报告
- 2026中国智能停车场管理系统行业市场需求产业链创新技术发展分析研究
- 2026代糖行业产能过剩风险与差异化竞争路径探讨
- 2026中国玩具行业市场竞争态势及未来市场发展趋势研究
- 2026年秋季开学小学防震减灾开学第一课
- 2026年继电保护专业岗位考核题库(附答案)
- 山东黄金焦家金矿安全生产管理制度汇编
- 出租车企业安全隐患排查工作手册
- 中国少儿思维能力培养市场营销模式及发展方向预测研究报告
- 2027届广州中考英语听说考试专项训练
- 2026年江苏省盐城市重点中学小升初英语考试题库试题附答案
- 新版2026年高考化学(黑吉辽蒙卷)试卷评析
- 中医护理基础理论培训
- 涂装废气RCO治理设备安装工程竣工验收报告
- 腰椎间盘突出症护理管理流程
评论
0/150
提交评论