📄 chatframe.java
字号:
package chat;import java.net.*;import java.io.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import com.borland.jbcl.layout.*;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2002</p> * <p>Company: </p> * @author unascribed * @version 1.0 */public class ChatFrame extends JFrame { JPanel contentPane; Label label1 = new Label(); Label label2 = new Label(); TextField textField1 = new TextField(); TextField textField2 = new TextField(); Button button1 = new Button(); TextArea textArea1 = new TextArea(); //Construct the frame DatagramPacket sendpacket,receivepacket;//声明发送和接收数据包 DatagramSocket sendsocket,receivesocket;//声明发送和接收DatagramSocket public ChatFrame() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } //Component initialization private void jbInit() throws Exception { //setIconImage(Toolkit.getDefaultToolkit().createImage(ChatFrame.class.getResource("[Your Icon]"))); contentPane = (JPanel) this.getContentPane(); label1.setText("发送信息:"); label1.setBounds(new Rectangle(13, 59, 60, 21)); contentPane.setLayout(null); this.setSize(new Dimension(363, 275)); this.setTitle("利用UDP实现聊天室"); label2.setText("请输入对方IP地址:"); label2.setBounds(new Rectangle(12, 19, 109, 23)); try { sendsocket=new DatagramSocket();//初始化 receivesocket=new DatagramSocket(5001); } catch(SocketException se){ se.printStackTrace() ; System.exit(0); } button1.setLabel("发送"); button1.setBounds(new Rectangle(280, 59, 59, 21)); button1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { button1_actionPerformed(e); } }); textField2.setBounds(new Rectangle(123, 20, 144, 19)); textArea1.setBounds(new Rectangle(11, 96, 333, 134)); textField1.setBounds(new Rectangle(76, 57, 191, 19)); contentPane.add(label2, null); contentPane.add(label1, null); contentPane.add(textField1, null); contentPane.add(button1, null); contentPane.add(textField2, null); contentPane.add(textArea1, null); } //Overridden so we can exit when window is closed protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } } public void waitforpackets() { while(true){ try{ byte[]array=new byte[100]; receivepacket=new DatagramPacket(array,array.length ); receivesocket.receive(receivepacket);//接收 textArea1.append("\nfrom "+receivepacket.getAddress() +" : "); byte data[]=receivepacket.getData() ; String received=new String(data,0); textArea1.append(received); } catch (IOException se){ textArea1.append(se.toString() +"\n"); se.printStackTrace() ; } } } void button1_actionPerformed(ActionEvent e) { String str=textField2.getText(); if(str.compareTo("")!=0 ){ try { textArea1.append("\nto "+textField2.getText() +" : "+textField1.getText() ); String s=textField1.getText() ; byte data[]=new byte[100]; s.getBytes(0,s.length() ,data,0); sendpacket=new DatagramPacket(data,s.length() ,InetAddress.getByName(textField2.getText()),5000); sendsocket.send(sendpacket); } catch(IOException exc){ textArea1.append(exc.toString() +"\n"); exc.printStackTrace() ; } } else textArea1.setText("please input your friend's IP first!"); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -