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

📄 mainform.java

📁 java做的局域网聊天程序共享了。。要的下
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
  void ed_input_keyTyped(KeyEvent e)  {    if((mainform.onlinestate!=1)&(e.isAltDown()))    {      JOptionPane.showMessageDialog(null, "没有处于在线状态,不能发送消息!");      return;    }    if ((!cbo_bc.isSelected())&(mainform.getuserip().trim()=="")&e.isAltDown())    {      JOptionPane.showMessageDialog(null,"你还没有选择给谁发消息!");      return;    }    String userinput;    userinput=ed_input.getText().trim();    if (e.isAltDown()&(e.getKeyChar()=='\n'))    {      if (cbo_bc.isSelected())        userinput=ctools.topack("16",userinput);      else        userinput=ctools.topack("06",userinput);        ed_show.append("我对"+curusername+"说:"+ed_input.getText());      ctools.senddata(mainform.getuserip(),userinput);      ed_input.setText("");      if(winstate.equals("1"))        this.setState(ICONIFIED);    }  }//end procedure  void but_setup_actionPerformed(ActionEvent e)  {    frm_set fw=new frm_set();    fw.setVisible(true);  } //procedurte endstatic void setuserip(String ip) {  curuserip=ip; }//end procedurestatic String getuserip(){  return(curuserip);}//end procedurestatic void setusername(String name){  curusername=name;  lab_uname.setText("当前用户名: "+name);}//end procedurestatic String getusername(){  return(curusername);}//end procedurestatic void setusericon(String icon,String state){  curusericon=icon;  Icon myicon=new ImageIcon("face/"+icon.trim()+"-1.gif");  lab_uimage.setIcon(myicon);}//end procedurestatic String getusericon(){  return(curusericon);}static void setmyname(String name){  myname=name;  lab_my.setText(" "+name+" ");}//end procedurestatic String getmyname(){  return(myname);}//end procedurestatic void setmyicon(String icon,int state){  myicon=icon;  Icon myicon=new ImageIcon("face/"+icon.trim()+"-1.gif");  lab_my.setIcon(myicon);}//end procedurestatic String getmyicon(){  return(myicon);}  void but_exit_keyTyped(KeyEvent e)  { System.exit(0);  }  void but_exit_mousePressed(MouseEvent e)  { System.exit(0);  }  void this_windowOpened(WindowEvent e)  {    String r;    r=ctools.readfromset(filename).trim();    if (r.equals("1"))    {      frm_set fs=new frm_set();      fs.show(true);    }  } //end procedure  void but_online_actionPerformed(ActionEvent e)  {    if (onlinestate==2)    {      //修改      if (!mythread.isAlive() )        mythread.start();      else        mythread.resume();      //end      String s;      s=ctools.topack("11",myname,myicon);      ctools.senddata("255.255.255.255",s); //户发出上线通知      onlinestate=1;      lab_info.setText("已经连接!");    }    onlinestate=1;  }  void but_about_actionPerformed(ActionEvent e)  {    frm_about fa=new frm_about();    fa.show();  }class newthread extends Thread{  public void run()  {   String data="";   String ip="";   String type;   while(true)   {     try{       byte[] array=new byte[maxStrCount];       receivepacket=new DatagramPacket(array,array.length);       receivesocket.receive(receivepacket);       ip=receivepacket.getAddress().toString();       ip=ip.substring(ip.indexOf("/")+1,ip.length()).trim();  //取出IP地址       //如果是收到自己的消息       if (ip.equals(mainform.myip))       {         continue;       }       data=ctools.bytetostr(receivepacket.getData(),receivepacket.getLength());       type=data.substring(0,2);       switch(Integer.parseInt(type))       {         case 2:  //当有用户发出上线通知时         {           String tname;           String ticon;           int idx;           int bh;           tname=data.substring(2,22).trim();           ticon=data.substring(22,27).trim();           idx=ctools.scanlist(ip);           if (idx<0)           {             ctools.addtolist(tname,ticon,ip,"1");           };           bh=ctools.scanlist(ip);           if (bh>=0)           {             ctools.setuserstate(bh,"1");           }           break;         }         case 3: //收到某用户断线的消息         {           int bh;           bh=ctools.scanlist(ip);           if (bh>=0)           {             ctools.setuserstate(bh,"2");           }           break;         }         case 4://离线         {           int bh;           bh=ctools.scanlist(ip);           if (bh>=0)           {             ctools.setuserstate(bh,"3");           }           mainform.onlinestate=3;           break;         }         case 6://聊天消息         {           String msg;           String tname;           int idx;           msg=data.substring(2,data.length());           idx=ctools.scanlist(ip);           if (idx>0)             tname=mainform.userlist[idx][1].trim();           else           {             tname="未知用户(正在查询): ";             ctools.senddata(ip,"12");           }           ed_show.append(nowtime.toLocaleString()+"  "+tname+": "+msg+'\n');           if(onlinestate==3) //如用户为离线状态,则自动发送消息           {             ctools.senddata(ip,"06"+onofflinetime);           }           break;         }         case 11:  //当有用户发出上线通知时         {           String tname;           String ticon;           int idx;           int bh;           tname=data.substring(2,22).trim();           ticon=data.substring(22,27).trim();           idx=ctools.scanlist(ip);           if (idx<0)           {             ctools.addtolist(tname,ticon,ip,"1");           };           String hpack=ctools.topack("02",myname,myicon);           ctools.senddata(ip,hpack);           bh=ctools.scanlist(ip);           if (bh>=0)           {             ctools.setuserstate(bh,"1");           }           break;         }         case 12://收到询问自已信息的消息         {           String ts;           ts=ctools.topack("11",myname,myicon);           ctools.senddata(ip,ts);           break;         }         case 14:  //重新上线         {           int bh;           bh=ctools.scanlist(ip);           if (bh>=0)           {             ctools.setuserstate(bh,"1");           }           else             ctools.senddata(ip,"12");           mainform.onlinestate=1;           break;         }       case 16: //收到广播消息       {         String msg;         String tname;         int idx;         msg=data.substring(2,data.length());         idx=ctools.scanlist(ip);         if (idx>0)           tname=mainform.userlist[idx][1].trim();         else         {           tname="未知用户(正在查询): ";           ctools.senddata(ip,"12");         }         ed_show.append(nowtime.toLocaleString()+"  "+tname+"* "+msg+'\n');         break;       }       }//end case     }     catch(IOException se){   //    lab_info.setText(se.toString());     }   }  }}  void but_offline_actionPerformed(ActionEvent e)  {    if (onlinestate!=2)    {//      mythread.stop(); // 由于演示需要,线程未停止,所以再次启动会出错      mythread.suspend();//      String hpack;      ctools.senddata("255.255.255.255","03");      mainform.onlinestate=2;      lab_info.setText("已经下线,你不能再收发消息!");    }  }  void but_online_mouseMoved(MouseEvent e)  {    but_online.setBorder(BorderFactory.createRaisedBevelBorder());  }  void but_offline_mouseMoved(MouseEvent e)  {    but_offline.setBorder(BorderFactory.createRaisedBevelBorder());  }  void but_setup_mouseMoved(MouseEvent e)  {    but_setup.setBorder(BorderFactory.createRaisedBevelBorder());  }  void but_about_mouseMoved(MouseEvent e)  {    but_about.setBorder(BorderFactory.createRaisedBevelBorder());  }  void but_exit_mouseMoved(MouseEvent e)  {    but_exit.setBorder(BorderFactory.createRaisedBevelBorder());  }  void but_online_mouseExited(MouseEvent e)  {    but_online.setBorder(BorderFactory.createEmptyBorder());  }  void but_offline_mouseExited(MouseEvent e)  {    but_offline.setBorder(BorderFactory.createEmptyBorder());  }  void but_setup_mouseExited(MouseEvent e)  {    but_setup.setBorder(BorderFactory.createEmptyBorder());  }  void but_about_mouseExited(MouseEvent e)  {    but_about.setBorder(BorderFactory.createEmptyBorder());  }  void but_exit_mouseExited(MouseEvent e)  {    but_exit.setBorder(BorderFactory.createEmptyBorder());  }  void ed_show_mouseReleased(MouseEvent e)  {    if (e.isPopupTrigger())    {      pop_menu.show(e.getComponent(),e.getX(),e.getY());    }  }  void jMenuItem1_menuKeyReleased(MenuKeyEvent e)  {    mainform.ed_show.setText("");  }  void jMenuItem2_mouseReleased(MouseEvent e)  {     JFileChooser fc = new JFileChooser();    if (JFileChooser.APPROVE_OPTION == fc.showOpenDialog(this)) {      ctools.WriteToSet(fc.getSelectedFile().getPath(),ed_show.getText());    }  }  void but_pause_actionPerformed(ActionEvent e)  {    if (onlinestate==1)    {      Icon iconfh=new ImageIcon("fh.gif");      but_pause.setIcon(iconfh);      String hpack;      ctools.senddata("255.255.255.255","04");      mainform.onlinestate=3;      lab_info.setText("暂时离线");      but_pause.setText("返回");      return;    }    if (onlinestate==3)    {      Icon iconlk=new ImageIcon("lk.gif");      but_pause.setIcon(iconlk);      String hpack;      ctools.senddata("255.255.255.255","14");      mainform.onlinestate=1;      lab_info.setText("上线");      but_pause.setText("离开");      return;    }  }  void but_pause_mouseExited(MouseEvent e)  {    but_pause.setBorder(BorderFactory.createEmptyBorder());  }  void but_pause_mouseMoved(MouseEvent e)  {    but_pause.setBorder(BorderFactory.createRaisedBevelBorder());  }}

⌨️ 快捷键说明

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