⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frame1.java~173~

📁 JAVA聊天 用JB7写的一个集客户端和服务器端为一体的聊天程序,算是个实验的副产品
💻 JAVA~173~
字号:
package chat;import java.awt.*;import java.awt.event.*;import javax.swing.*;import com.borland.jbcl.layout.*;import java.util.*;import java.net.*;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2002</p> * <p>Company: </p> * @author unascribed * @version 1.0 */public class Frame1 extends JFrame {  private JPanel contentPane;  private BorderLayout borderLayout1 = new BorderLayout();  private JPanel jPanel1 = new JPanel();  private JTextField jTextField1 = new JTextField();  private JCheckBox jCheckBox1 = new JCheckBox();  private JButton SendButton = new JButton();  private JSplitPane jSplitPane1 = new JSplitPane();  private JScrollPane jScrollPane1 = new JScrollPane();  private JScrollPane jScrollPane2 = new JScrollPane();  private JList jList1 = new JList();  private JTextArea jTextArea1 = new JTextArea();  private JButton QuitButton = new JButton();  private JButton RefreshButton = new JButton();  private Receiver MyReceiver;  private Thread ReceiveThread;  private Vector userList;  private InetAddress localHost;  private InetAddress MulticastAddress;  private final int ServerPort=3338;  private final int PacketSize=256;  //Construct the frame  public Frame1() {    enableEvents(AWTEvent.WINDOW_EVENT_MASK);    try {      jbInit();    }    catch(Exception e) {      e.printStackTrace();    }  }  //Component initialization  private void jbInit() throws Exception  {    //setIconImage(Toolkit.getDefaultToolkit().createImage(Frame1.class.getResource("[Your Icon]")));    contentPane = (JPanel) this.getContentPane();    contentPane.setLayout(borderLayout1);    this.setSize(new Dimension(450, 300));    this.setTitle("chat");    jTextField1.setToolTipText("");    jTextField1.setColumns(15);    jCheckBox1.setText("广播");    SendButton.setText("发送");    SendButton.addActionListener(new java.awt.event.ActionListener() {      public void actionPerformed(ActionEvent e) {        SendButton_actionPerformed(e);      }    });    jTextArea1.setToolTipText("");    jSplitPane1.setPreferredSize(new Dimension(134, 271));    jList1.setBackground(new Color(197, 190, 255));    jList1.setSelectionBackground(new Color(10, 131, 106));    jList1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);    jList1.addMouseListener(new java.awt.event.MouseAdapter() {      public void mouseClicked(MouseEvent e) {        jList1_mouseClicked(e);      }    });    jScrollPane1.setPreferredSize(new Dimension(130, 132));    QuitButton.setText("退出");    QuitButton.addActionListener(new java.awt.event.ActionListener() {      public void actionPerformed(ActionEvent e) {        QuitButton_actionPerformed(e);      }    });    RefreshButton.setToolTipText("");    RefreshButton.setText("刷新");    RefreshButton.addActionListener(new java.awt.event.ActionListener() {      public void actionPerformed(ActionEvent e) {        RefreshButton_actionPerformed(e);      }    });    contentPane.add(jPanel1, BorderLayout.SOUTH);    jPanel1.add(jCheckBox1, null);    jPanel1.add(jTextField1, null);    jPanel1.add(SendButton, null);    jPanel1.add(RefreshButton, null);    jPanel1.add(QuitButton, null);    contentPane.add(jSplitPane1, BorderLayout.CENTER);    jSplitPane1.add(jScrollPane2, JSplitPane.RIGHT);    jScrollPane2.getViewport().add(jTextArea1, null);    jSplitPane1.add(jScrollPane1, JSplitPane.LEFT);    jScrollPane1.getViewport().add(jList1, null);    userList = new Vector();    jList1.setListData(userList);    try{      localHost=InetAddress.getLocalHost();      jTextField1.setText("");    }catch(Exception ex){       jTextArea1.append(ex.toString());    }    byte tempbyte[]=localHost.getAddress();    int tempint[]=new int[10];    for(int i=0; i<4; i++)      tempint[i]=tempbyte[i] & 0xff;    MulticastAddress=InetAddress.getByName(tempint[0]+"."+tempint[1]+"."+tempint[2]+"."+255);    MyReceiver=new Receiver();    ReceiveThread=new Thread(MyReceiver);    ReceiveThread.start();    Sender s=new Sender("<system ECHO>",MulticastAddress);    Thread t2=new Thread(s);    t2.start();  }  //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);    }  }  void SendButton_actionPerformed(ActionEvent e) {    if(jCheckBox1.isSelected()){      Sender s=new Sender(jTextField1.getText(),MulticastAddress);      Thread t=new Thread(s);      t.start();    }else if(jList1.getSelectedIndex()!=-1){      String HostName=userList.get(jList1.getSelectedIndex()).toString();      try{        Sender s=new Sender(jTextField1.getText(),InetAddress.getByName(HostName));        Thread t=new Thread(s);        t.start();      }catch(Exception e1){        jTextArea1.append(e1.toString());      }    }    jTextField1.setText("");  }  void jList1_mouseClicked(MouseEvent e) {    //  }  void QuitButton_actionPerformed(ActionEvent e) {    System.exit(0);  }  private class Receiver implements Runnable{    private DatagramSocket ReceiverSocket=null;    public void run(){      try{        ReceiverSocket=new DatagramSocket(ServerPort);        jTextArea1.append("系统消息:监听服务在端口"+ReceiverSocket.getLocalPort()+"正常启动\n");      }catch(java.net.SocketException e){        jTextArea1.append("系统错误:"+e.toString()+"\n");      }      while(true){        DatagramPacket packet;        InetAddress address;        byte buf[];        try{          buf=new byte[1024];          packet=new DatagramPacket(buf,1024);          ReceiverSocket.receive(packet);          address=packet.getAddress();          byte tempbyte[]=new byte[packet.getLength()];          for(int i=0;i<packet.getLength();i++){            tempbyte[i]=packet.getData()[i];          }          String str=new String(tempbyte);          if (str.equals(new String("<system ECHO>"))){            if(userList.indexOf(address.getHostAddress())==-1){              jTextArea1.append(address.getHostAddress()+"登陆成功\n");              Sender s=new Sender("<system OK>",address);              Thread t2=new Thread(s);              t2.start();              userList.add(address.getHostAddress());              jList1.updateUI();            }          }          else if(str.equals(new String("<system OK>"))){            if(userList.indexOf(address.getHostAddress())==-1){              userList.add(address.getHostAddress());              jList1.updateUI();            }          }          else{            if(userList.indexOf(address.getHostAddress())==-1){              userList.add(address.getHostAddress());              jList1.updateUI();            }           jTextArea1.append("来自"+address.getHostAddress()+"的消息:\n");           jTextArea1.append(str+"\n");          }        }catch(Exception e){        jTextArea1.append("系统错误:"+e.toString()+"\n");        }      }    }  }  private class Sender implements Runnable{    private String SendStr;    private InetAddress Address;    public Sender(String str,InetAddress addr){      SendStr=str;      Address=addr;    }    public void run(){      DatagramSocket SenderSocket=null;      DatagramPacket packet;      byte buf[];      try{        SenderSocket=new DatagramSocket();      }catch(Exception e){        jTextArea1.append("系统错误:"+e.toString()+"\n");      }      if(SenderSocket!=null){        try{          buf=SendStr.getBytes();          packet=new DatagramPacket(buf,buf.length,Address,ServerPort);          SenderSocket.send(packet);        }catch(Exception e){          jTextArea1.append("系统错误:"+e.toString()+"\n");        }      }    }  }  void RefreshButton_actionPerformed(ActionEvent e) {    jList1.updateUI();  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -