工程技术学院毕业设计(论文)专用纸
参考文献
[1] 郑玲,李为.计算机专业毕业设计指导(本科). 北京:清华大学出版社,2007 [2] 王建华,董志敏译. JAVA核心技术 卷Ⅱ:高级特性. 北京:机械工业出版社,2005
[3] 程峰,黄若波译.JAVA核心技术 卷Ⅰ:基础知识. 北京:机械工业出版社,2005 [4] 张海藩.软件工程导论(第四版). 北京:清华大学出版社,2002
[5] 姬猛洛,李军译. 即时消息传递系统编程源代码解析.北京:电子工业出版社,2002
[6] 李建森译. Java2图形设计 卷二:Swing .北京:机械工业出版社,2000 [7] 侯捷译. Java2 编程思想. 北京:机械工业出版社,2002 [8] 孙卫琴.JAVA网络编程精解. 北京:电子工业出版社,2007 [9] 印旻.Java语言与面向对象程序设计.北京:清华大学出版社,2000
[10] 王大锋. P2P即时通讯软件监控系统的研究与实现. 北京:中国科学院研究生院软件研究所,2005.
[11] 徐晓春. Java即时通讯系统. 长春:吉林大学,2007
31 第 页
工程技术学院毕业设计(论文)专用纸
附录 A 程序源代码
1,LoadingFrame
程序的登录窗口,从此窗口中,用所得到的用户名来初始化一个StateFrame,在后期的完善中,会完成记住用户名及自动登录功能。主要通过将用户名写入一个记事本保存起来。具体的源码如下:
package javaqq; import java.awt.*; import java.awt.event.*; import javax.swing.*;
public class LoadingFrame extends JFrame implements ActionListener{ public String text=null;
private Icon icon=new ImageIcon(\ private JLabel label=new JLabel(icon); private JPanel panel=new JPanel(); private JPanel inputPanel=new JPanel(); private JLabel nameLabel=new JLabel(\用户名\ private JTextField nameText=new JTextField(12); private JPanel choosePanel=new JPanel();
private JCheckBox reCheckBox=new JCheckBox(\记住用户名\ private JCheckBox autoCheckBox=new JCheckBox(\自动登陆\
private JPanel btnPanel=new JPanel(new FlowLayout(FlowLayout.RIGHT)); private JButton cancelBtn=new JButton(\取消\ public JButton loadBtn=new JButton(\登录\
public LoadingFrame(){
}
public void init(){ setTitle(\登录\
setIconImage((new ImageIcon(\
setLayout(new GridLayout(3,1)); 第 32 页
工程技术学院毕业设计(论文)专用纸
JPanel content=(JPanel)this.getContentPane();
content.add(label);
label.setBounds(0, 0, 350, 250);
panel.setBorder(BorderFactory.createTitledBorder(\ inputPanel.add(nameLabel); inputPanel.add(nameText); panel.add(inputPanel); choosePanel.add(reCheckBox); choosePanel.add(autoCheckBox); panel.add(choosePanel); content.add(panel); btnPanel.add(loadBtn); btnPanel.add(cancelBtn); content.add(btnPanel);
setLocation(387, 234); setSize(350,300); setVisible(true);
setDefaultCloseOperation(3);
loadBtn.addActionListener(this); cancelBtn.addActionListener(this); nameText.addActionListener(this); this.setResizable(false);
}
public void actionPerformed(ActionEvent e) { if(e.getSource()==loadBtn||e.getSource()==nameText){ text=nameText.getText(); new StateFrame(text);
dispose();
第 33 页
工程技术学院毕业设计(论文)专用纸
}else if(e.getSource()==cancelBtn){ dispose(); System.exit(0);
}
}
}
2,StateFrame
用来显示用用户名及在线人的窗口。具体的源码如下:package javaqq;
import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.net.*;
public class StateFrame extends JFrame { String name=\匿名\
JPanel northPanel=new JPanel(new GridLayout(1,2)); JPanel centerPanel=new JPanel(new GridLayout(1,1)); JPanel southPanel=new JPanel();
JPanel labelPanel=new JPanel(new GridLayout(2,1)); Icon icon=new ImageIcon(\ JLabel pic=new JLabel(icon ); JLabel nameLabel=new JLabel(); JLabel stateLabel=new JLabel(\在线\ List friList=new List();
JButton allBtn=new JButton(\群聊\
GroupChatFrame groupchat;
UserInfo[] userinfo=new UserInfo[50];
第 34 页
工程技术学院毕业设计(论文)专用纸
ServerSocket listen_socket;
public final static int DEFAULT_PORT=8322; public final static int CATCH_PORT=7322; public final static int TCP_PORT=6322;
DatagramSocket socket=null; InetAddress group; InetAddress groupC; DatagramPacket packet;
DatagramSocket s=null; MulticastSocket socketr; MulticastSocket socketC; Socket Csocket;
Listener listener;
public StateFrame() { }
public StateFrame(String s) { this.name=s;
groupchat=new GroupChatFrame(this); init(); JoinGroup();
enableEvents(AWTEvent.WINDOW_EVENT_MASK); groupListener(); TCPListener();
}
第 35 页