?? mainform.java
字號:
void ed_input_keyTyped(KeyEvent e) { if((mainform.onlinestate!=1)&(e.isAltDown())) { JOptionPane.showMessageDialog(null, "沒有處于在線狀態(tài),不能發(fā)送消息!"); return; } if ((!cbo_bc.isSelected())&(mainform.getuserip().trim()=="")&e.isAltDown()) { JOptionPane.showMessageDialog(null,"你還沒有選擇給誰發(fā)消息!"); 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("當(dāng)前用戶名: "+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); //戶發(fā)出上線通知 onlinestate=1; lab_info.setText("已經(jīng)連接!"); } 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: //當(dāng)有用戶發(fā)出上線通知時 { 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) //如用戶為離線狀態(tài),則自動發(fā)送消息 { ctools.senddata(ip,"06"+onofflinetime); } break; } case 11: //當(dāng)有用戶發(fā)出上線通知時 { 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("已經(jīng)下線,你不能再收發(fā)消息!"); } } 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()); }}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -