?? singleframe.java
字號:
package NewQQ;import java.awt.*;import java.awt.event.*;import java.io.*;import java.util.*;import javax.swing.*;class SingleFrame { String name; String me; JFrame jframe; TextArea jtextarea; JTextField jtextfield; JButton jbutton; JButton jbuttonrecv; JButton jbuttonrefuse; JPanel jpanel; ObjectOutputStream oos; HashMap user; String file; String savefile; JFileChooser chooser = new JFileChooser(); public SingleFrame(String name,ObjectOutputStream oos,HashMap user,String me){ this.name = name; this.oos = oos; this.user = user; this.me = me; } public void init(){ jframe = new JFrame("與 "+name+" 聊天中"); jframe.setSize(400,300); jpanel = new JPanel(); jtextarea = new TextArea(); jtextfield = new JTextField(10); jpanel.add(jtextfield); jtextarea.setEditable(false); jtextarea.setFocusable(false); jbutton = new JButton("傳文件"); jbuttonrecv = new JButton("接文件"); jbuttonrefuse = new JButton("取消接收"); jbuttonrecv.setEnabled(false); jbuttonrefuse.setEnabled(false); jpanel.add(jbutton); jpanel.add(jbuttonrecv); jpanel.add(jbuttonrefuse); class BuLi implements ActionListener{ public void actionPerformed(ActionEvent arg0){ try { if(chooser.showOpenDialog(new JTextField())==JFileChooser.APPROVE_OPTION){ file = chooser.getSelectedFile().getAbsolutePath(); String filename = file; QQMessage sendself = new QQMessage(); sendself.setType(12); sendself.setSender(me); sendself.setRecver(me); sendself.setFilename(file); oos.writeObject(sendself); oos.flush(); jtextarea.append("即將發送文件:"+filename+"\n"); jtextarea.append("等待對方接收或者關閉窗口取消"+"\n"); StringTokenizer st = new StringTokenizer(filename,"/"); while(st.hasMoreTokens()){filename = st.nextToken();} QQMessage filemsg = new QQMessage(); filemsg.setType(5); filemsg.setSender(me); filemsg.setRecver(name); filemsg.setFilename(filename); oos.writeObject(filemsg); oos.flush(); } } catch (Exception e) {} } } class QQButtonListener implements ActionListener{ public void actionPerformed(ActionEvent arg0){ try { JButton jb = (JButton)arg0.getSource(); QQMessage filemessage = new QQMessage(); filemessage.setSender(me); filemessage.setRecver(name); if(jb.getText().equals("接文件")){ if(chooser.showSaveDialog(new JTextField())==JFileChooser.APPROVE_OPTION){ savefile = chooser.getSelectedFile().getAbsolutePath(); filemessage.setType(10); } else filemessage.setType(11); } else{ filemessage.setType(11); } oos.writeObject(filemessage); oos.flush(); QQMessage sendself = new QQMessage(); sendself.setType(13); sendself.setSender(me); sendself.setRecver(me); sendself.setFilename(savefile); oos.writeObject(sendself); oos.flush(); jbuttonrefuse.setEnabled(false); jbuttonrecv.setEnabled(false); } catch (IOException e) {} } } QQButtonListener bbl = new QQButtonListener(); jbuttonrecv.addActionListener(bbl); jbuttonrefuse.addActionListener(bbl); jbutton.addActionListener(new BuLi()); class MyAL implements ActionListener{ public void actionPerformed(ActionEvent arg0) { try { String com = jtextfield.getText(); jtextarea.append("我對"); jtextarea.append(name); jtextarea.append("說:\n"); jtextarea.append(com); jtextarea.append("\n\n"); QQMessage mess = new QQMessage(); mess.setType(4); mess.setSender(me); mess.setRecver(name); mess.setMessage(com); oos.writeObject(mess); oos.flush(); jtextfield.setText(""); } catch (IOException e) {} } } jtextfield.addActionListener(new MyAL()); jframe.add(jpanel,BorderLayout.SOUTH); jframe.add(jtextarea); class TClientWindowListener extends WindowAdapter{ public void windowClosing(WindowEvent e){ user.remove(name); file = null; } } jframe.addWindowListener(new TClientWindowListener()); jframe.setVisible(true); }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -