📄 mainform.java
字号:
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 + -