基于JAVA局域网聊天程序设计与实现(8)

2018-11-17 19:18

工程技术学院毕业设计(论文)专用纸

参考文献

[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 页


基于JAVA局域网聊天程序设计与实现(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:怀山药GAP基地建设可行性研究报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: