A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


通宵写的一个窗口化聊天的,大家有时间一起把他做完美了啊


  1. import java.awt.event.*;
  2. import java.awt.*;
  3. import java.util.concurrent.locks.*;
  4. import java.net.*;
  5. import java.io.*;
  6. import java.lang.*;


  7. /*class UdpLiaoTian
  8. {
  9.         public static void main(String[] aregs)
  10.         {
  11.                 new UdpFaSong().start();
  12.                 new UdpJieShou().start();
  13.         }
  14. }*/
  15. class ArrayTest
  16. {

  17.             static Frame f;
  18.                 static Button b;
  19.             static TextField tf;
  20.                 static TextArea ta;
  21.                 public static void main(String[] args)
  22.         {


  23.                  f = new Frame("聊天中。。。");
  24.                  f.setLayout(null);//让布局格式为空
  25.                  b = new Button("发送");
  26.                  tf = new TextField();
  27.                  ta = new TextArea();

  28.                 f.setBounds(350,300,600,400);
  29.                 b.setBounds(500,350,60,30);
  30.                 tf.setBounds(10,350,450,50);
  31.                 ta.setBounds(10,30,550,300);
  32.                 ta.enableInputMethods(false);
  33.                 f.add(b);
  34.                 f.add(tf);
  35.                 f.add(ta);
  36.                 f.setVisible(true);//让窗口显示出来

  37.                 b.addActionListener(new ButtonEvent());//按钮活动事件
  38.                 f.addWindowListener(new FrameEvent());//窗口活动事件
  39.                 tf.addKeyListener(new FileTextEvent());//
  40.                 ta.addKeyListener(new TextAreaEvent());
  41.                 new Thread(new UdpJieShou()).start();
  42.                
  43.                
  44.         }
  45. }


  46. class  UdpJieShou extends Thread
  47. {
  48.         public void run()
  49.         {
  50.                 try
  51.                 {
  52.                         DatagramSocket ds = new DatagramSocket(8001);               
  53.                         byte[] buf =new byte[1024];
  54.                         DatagramPacket dp = new DatagramPacket(buf,buf.length);
  55.                         while(true)
  56.                         {       
  57.                                 ds.receive(dp);
  58.                                 ArrayTest.ta.append(dp.getAddress()+new String(dp.getData(),0,dp.getLength() ));       
  59.                         }       
  60.                 }
  61.                 catch (Exception e)
  62.                 {
  63.                         throw new RuntimeException("jieshouchucuo");
  64.                 }
  65.         }
  66. }


  67. class FrameEvent extends WindowAdapter
  68. {
  69.         public void windowClosing(WindowEvent e)
  70.         {
  71.                 System.exit(0);
  72.         }
  73. }
  74. class ButtonEvent  implements ActionListener
  75. {       
  76.         Lock lock= new ReentrantLock();
  77.         Condition  con = lock.newCondition();
  78.         private String st="nihao2";
  79.         boolean flag=true;
  80.         public void actionPerformed(ActionEvent e)
  81.         {
  82.                 String str = ArrayTest.tf.getText();
  83.                 ArrayTest.ta.append("自己的:\n"+str+"\n");
  84.                 fasong(str);

  85.                 ArrayTest.tf.setText(" ");
  86.         }
  87.        


  88.         public void fasong(String str)
  89.         {
  90.                         lock.lock();
  91.                         try
  92.                         {
  93.                                         st=str;
  94.                                         DatagramSocket ds = new DatagramSocket();
  95.                                         byte[] buf=st.getBytes();
  96.                                         DatagramPacket dp =new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.0.100"),8000);
  97.                                         ds.send(dp);
  98.                                         //ds.close();       
  99.                                         System.out.print("meiyou");                       
  100.                         }
  101.                         catch(Exception a)
  102.                         {
  103.                                 throw new RuntimeException("fasongyichang");
  104.                        
  105.                         }
  106.                         finally
  107.                         {
  108.                                 lock.unlock();
  109.                         }
  110.         }

  111. }

  112. class FileTextEvent extends KeyAdapter
  113. {
  114.         public void keyPressed(KeyEvent e)
  115.         {
  116.                 if (e.getKeyCode()==10)
  117.                 {
  118.                          ActionEvent a=null;
  119.                          new ButtonEvent().actionPerformed(a);
  120.                 }
  121.         }
  122. }
  123. class TextAreaEvent extends KeyAdapter
  124. {
  125.         public void keyPressed(KeyEvent e)
  126.         {
  127.                 e.consume();

  128.         }
  129. }
复制代码

2 个回复

正序浏览
坏习惯,没注释。想别认看懂你的代码,比让他自己写还辛苦。{:soso_e120:}
回复 使用道具 举报
厉害 赞一个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马