import java.awt.BorderLayout;
import java.awt.List;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import java.io.IOException;
import java.net.*;
/*
 * 创建日期 2005-8-17
 *
 * TODO 要更改此生成的文件的模板,请转至
 * 窗口 - 首选项 - Java - 代码样式 - 代码模板
 *//**
 * @author 董伟
 *
 * TODO 要更改此生成的类型注释的模板,请转至
 * 窗口 - 首选项 - Java - 代码样式 - 代码模板
 */
public class Chat extends JFrame { /**
 * 
 */
List jls=new List();
JTextField tfIP=new JTextField(10);
JTextField tfData=new JTextField(15);
JPanel jp=new JPanel();

DatagramSocket ds;
//jp.setLayout(new BorderLayout());
public Chat()
{
 //TODO 自动生成构造函数存根
         new Thread(new Runnable()
{ public void run() 
{
// TODO 自动生成方法存根
byte [] buf = new byte[1024];
DatagramPacket dp=new 
DatagramPacket(buf,buf.length);
while(true)
{
try 
{

ds.receive(dp);


jls.add(new String(dp.getData(),0,dp.getLength()) + "    from"
                    + dp.getAddress().getHostAddress()+ " : " + dp.getPort() ,0);
;
} catch (IOException e) 
{
// TODO 自动生成 catch 块
e.printStackTrace();
}

}

}

}).start();
try
{
 ds=new DatagramSocket(3000);
}
catch(Exception e)
{
e.printStackTrace();
}

this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);

this.getContentPane().add(jls,"Center");
this.getContentPane().add(jp,"South");
jp.setLayout(new BorderLayout());
jp.add(tfIP,"West");
jp.add(tfData,"East");
tfData.addActionListener(new ActionListener()
{ public void actionPerformed(ActionEvent arg0) 
{
// TODO 自动生成方法存根
 try
{
byte [] buf;
buf=tfData.getText().getBytes();
   
DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName(tfIP.getText()),3000);
ds.send(dp);

}
    catch(Exception ex)
{
     ex.printStackTrace();
}
    tfData.setText("");
}


        });
this.addWindowListener(new WindowAdapter()
           {
            public void windowClosing(WindowEvent e)
             {
               ds.close();
               dispose();
               System.exit(0);
             }
           });

}
public static void main(String[] args) {
System.out.println("程序开始运行了啊");
Chat c=new Chat();
c.setSize(300,400);
c.setTitle("我的聊天室");
c.setVisible(true);
c.setResizable(false);
}
}

解决方案 »

  1.   

    是这个~
    import java.awt.BorderLayout;
    import java.awt.List;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    import javax.swing.WindowConstants;
    import java.io.IOException;
    import java.net.*;
    /*
     * 创建日期 2005-8-17
     *
     * TODO 要更改此生成的文件的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     *//**
     * @author 董伟
     *
     * TODO 要更改此生成的类型注释的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    public class Chat extends JFrame { /**
     * 
     */
    List jls=new List();
    JTextField tfIP=new JTextField(10);
    JTextField tfData=new JTextField(15);
    JPanel jp=new JPanel();

    DatagramSocket ds;
    //jp.setLayout(new BorderLayout());
    public Chat()
    {
    // TODO 自动生成构造函数存根
    new Thread(new Runnable()
    { public void run() 
    {
    // TODO 自动生成方法存根
       byte [] buf = new byte[1024];
    DatagramPacket dp=new DatagramPacket(buf,buf.length);
    while(true)
    {
     try 
    {

    ds.receive(dp);


    jls.add(new String(dp.getData(),0,dp.getLength()) + "    from"
            + dp.getAddress().getHostAddress()+ " : " + dp.getPort() ,0);
    ;
    } catch (IOException e) 
    {
    e.printStackTrace();
    }

     }

    }

    }).start();
    try
    {
     ds=new DatagramSocket(3000);
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }

    this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);

    this.getContentPane().add(jls,"Center");
    this.getContentPane().add(jp,"South");
    jp.setLayout(new BorderLayout());
    jp.add(tfIP,"West");
    jp.add(tfData,"East");
    tfData.addActionListener(new ActionListener()
      {
                public void actionPerformed(ActionEvent arg0) 
    {
    // TODO 自动生成方法存根
     try
    {
    byte [] buf;
    buf=tfData.getText().getBytes();
       
    DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName(tfIP.getText()),3000);
    ds.send(dp);

    }
    catch(Exception ex)
    {
        ex.printStackTrace();
    }
      tfData.setText("");
    }


           });
    this.addWindowListener(new WindowAdapter()
               {
                public void windowClosing(WindowEvent e)
                 {
                   ds.close();
                   dispose();
                   System.exit(0);
                 }
               });

    }
    public static void main(String[] args) {
    System.out.println("程序开始运行了啊");
    Chat c=new Chat();
    c.setSize(300,400);
    c.setTitle("我的聊天室");
    c.setVisible(true);
    c.setResizable(false);
    }
    }