仿QQjava源代码.docx_第1页
仿QQjava源代码.docx_第2页
仿QQjava源代码.docx_第3页
仿QQjava源代码.docx_第4页
仿QQjava源代码.docx_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

import java.awt.BorderLayout;import java.awt.Component;import java.awt.Dialog;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.GridLayout;import java.awt.Image;import java.awt.Insets;import java.awt.MenuItem;import java.awt.PopupMenu;import java.awt.Rectangle;import java.awt.SystemTray;import java.awt.Toolkit;import java.awt.TrayIcon;import java.awt.TrayIcon.MessageType;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ComponentAdapter;import java.awt.event.ComponentEvent;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import .DatagramPacket;import .DatagramSocket;import .InetAddress;import .SocketException;import .UnknownHostException;import java.util.Date;import java.util.Scanner;import java.util.Stack;import java.util.prefs.Preferences;import javax.swing.BoxLayout;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JList;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JPasswordField;import javax.swing.JPopupMenu;import javax.swing.JProgressBar;import javax.swing.JScrollPane;import javax.swing.JTabbedPane;import javax.swing.JTextField;import javax.swing.JToggleButton;import javax.swing.ScrollPaneConstants;import javax.swing.SwingConstants;import javax.swing.UIManager;import javax.swing.border.BevelBorder;import javax.swing.border.Border;import javax.swing.border.EmptyBorder;import javax.swing.border.TitledBorder;import javax.swing.tree.DefaultMutableTreeNode;import javax.swing.tree.DefaultTreeModel;import javax.swing.tree.TreePath;public class EQ extends JDialog private JTextField ipEndTField; private JTextField ipStartTField; private JTextField userNameTField;/用户框 private JPasswordField passwordTField;/密码框 private JTextField placardPathTField;/placard:公告 private JTextField updatePathTField;/更新路径 private JTextField pubPathTField; public static EQ frame = null; private ChatTree chatTree; private JPopupMenu popupMenu;/右键菜单 private JTabbedPane tabbedPane;/分页面板 private JToggleButton searchUserButton;/搜索用户按钮 private JProgressBar progressBar;/滚动条 private JList faceList; private JButton selectInterfaceOKButton; private DatagramSocket ss;/数据报插座 private final JLabel stateLabel; private static String user_dir; private static File localFile; private static File netFile; private String netFilePath; private JButton messageAlertButton; private Stack messageStack;/Stack 类表示后进先出(LIFO)的对象堆栈。 private ImageIcon messageAlertIcon; private ImageIcon messageAlertNullIcon; private Rectangle location; public static TrayIcon trayicon; private Dao dao; /Preferences.systeRoot:返回系统的根首选项节点 Preferences:参数选择 public final static Preferences preferences = Preferences.systemRoot(); private JButton userInfoButton; /- public static void main(String args) try String laf = preferences.get(lookAndFeel, java默认); if(laf.indexOf(当前系统) -1) UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName(); EQ frame = new EQ(); frame.setVisible(true); frame.SystemTrayInitial();/ 初始化系统栏 frame.server(); frame.checkPlacard(); catch(Exception e) e.printStackTrace(); /- public EQ() super(new JFrame(); frame = this; dao = Dao.getDao(); location = dao.getLocation(); setTitle(EQ聊天); setBounds(location); progressBar = new JProgressBar(); /BevelBorder:该类实现简单的双线斜面边框。Bevel:斜面 lowered:凹入斜面类型。 progressBar.setBorder(new BevelBorder(BevelBorder.LOWERED); tabbedPane = new JTabbedPane(); popupMenu = new JPopupMenu(); chatTree = new ChatTree(this); user_dir = System.getProperty(user.dir);/ 程序执行路径用于系统更新 localFile = new File(user_dir + File.separator + EQ.jar);/ 本地EQ文件 stateLabel = new JLabel();/ 状态栏标签 this.addWindowListener(new FrameWindowListener();/ 添加窗体监视器 this.addComponentListener(new ComponentAdapter() public void componentResized(final ComponentEvent e) saveLocation(); public void componentMoved(final ComponentEvent e) saveLocation(); ); try/ 启动通讯服务端口 ss = new DatagramSocket(1111); catch(SocketException e2) if(e2.getMessage().startsWith(Address already in use) showMessageDialog(服务端口被占用,或者本软件已经运行。); System.exit(0); / 初始化公共信息按钮 messageAlertIcon = new ImageIcon(EQ.class.getResource(/image/messageAlert.gif); messageAlertNullIcon = new ImageIcon(EQ.class.getResource(/image/messageAlertNull20.gif); messageStack = new Stack(); messageAlertButton = new JButton(); messageAlertButton.setHorizontalAlignment(SwingConstants.RIGHT); messageAlertButton.setContentAreaFilled(false);/不填充内容区域 final JPanel BannerPanel = new JPanel(); BannerPanel.setLayout(new BorderLayout(); this.add(BannerPanel,BorderLayout.NORTH); userInfoButton = new JButton(); BannerPanel.add(userInfoButton,BorderLayout.WEST); userInfoButton.setMargin(new Insets(0,0,0,10);/Margin:边距 insets:插入 initUserInfoButton();/ 初始化本地用户头像按钮 BannerPanel.add(messageAlertButton,BorderLayout.CENTER); messageAlertButton.addActionListener(new ActionListener() Override public void actionPerformed(ActionEvent arg0) if(!messageStack.empty() showMessageDialog(messageStack.pop();/堆栈顶部的对象(Vector 对象中的最后一项)。 ); messageAlertButton.setIcon(messageAlertIcon); showMessageBar(); this.add(tabbedPane,BorderLayout.CENTER); tabbedPane.setTabPlacement(SwingConstants.LEFT);/设置此选项卡窗格的选项卡布局 ImageIcon userTicon = new ImageIcon(EQ.class.getResource(/image/tabIcon/tabLeft.PNG); tabbedPane.addTab(null,userTicon,createUserList(),用户列表); ImageIcon sysOTicon = new ImageIcon(EQ.class.getResource(/image/tabIcon/tabLeft2.PNG); tabbedPane.addTab(null, sysOTicon, createSysToolPanel(), 系统操作); ImageIcon sysSTicon = new ImageIcon(EQ.class.getResource(/image/tabIcon/tabLeft3.png); tabbedPane.addTab(null, sysSTicon, createSysSetPanel(), 系统设置); this.setAlwaysOnTop(true);/总在顶部 /- private JScrollPane createSysSetPanel()/系统设置面板 final JPanel sysSetPanel = new JPanel(); JScrollPane scrollPane = new JScrollPane(sysSetPanel); sysSetPanel.setLayout(new BoxLayout(sysSetPanel,BoxLayout.Y_AXIS); scrollPane.setBorder(new EmptyBorder(0,0,0,0); final JPanel sysPathPanel = new JPanel(); sysPathPanel.setMaximumSize(new Dimension(600,200); sysPathPanel.setBorder(new TitledBorder(系统路径);/title - 边框应显示的标题 sysPathPanel.setLayout(new GridLayout(0,1); sysSetPanel.add(sysPathPanel); sysPathPanel.add(new JLabel(程序升级路径); updatePathTField = new JTextField(preferences.get(updatePath, 请输入路径); sysPathPanel.add(updatePathTField); sysPathPanel.add(new JLabel(系统公告路径:); placardPathTField = new JTextField(preferences.get(placardPath,请输入路径); sysPathPanel.add(placardPathTField); sysPathPanel.add(new JLabel(公共程序路径:); pubPathTField = new JTextField(preferences.get(pubPath, 请输入路径); sysPathPanel.add(pubPathTField); final JButton pathOKButton = new JButton(确定); pathOKButton.setActionCommand(sysOK); pathOKButton.addActionListener(new SysSetPanelOKListener(); sysSetPanel.add(pathOKButton); final JPanel loginPanel = new JPanel(); loginPanel.setMaximumSize(new Dimension(600, 90); loginPanel.setBorder(new TitledBorder(登录升级服务器); final GridLayout gridLayout_1 = new GridLayout(0, 1); gridLayout_1.setVgap(5); loginPanel.setLayout(gridLayout_1); sysSetPanel.add(loginPanel); final JPanel panel_7 = new JPanel(); panel_7.setLayout(new BoxLayout(panel_7, BoxLayout.X_AXIS); loginPanel.add(panel_7); panel_7.add(new JLabel(用户名:); userNameTField = new JTextField(preferences.get(username, 请输入用户名); panel_7.add(userNameTField); final JPanel panel_8 = new JPanel(); panel_8.setLayout(new BoxLayout(panel_8, BoxLayout.X_AXIS); loginPanel.add(panel_8); panel_8.add(new JLabel(密码:); passwordTField = new JPasswordField(*); panel_8.add(passwordTField); final JButton loginOKButton = new JButton(确定); sysSetPanel.add(loginOKButton); loginOKButton.setActionCommand(loginOK); loginOKButton.addActionListener(new SysSetPanelOKListener(); final JPanel ipPanel = new JPanel(); final GridLayout gridLayout_2 = new GridLayout(0, 1); gridLayout_2.setVgap(5); ipPanel.setLayout(gridLayout_2); ipPanel.setMaximumSize(new Dimension(600, 90); ipPanel.setBorder(new TitledBorder(IP搜索范围); sysSetPanel.add(ipPanel); final JPanel panel_5 = new JPanel(); panel_5.setLayout(new BoxLayout(panel_5, BoxLayout.X_AXIS); ipPanel.add(panel_5); panel_5.add(new JLabel(起始IP:); ipStartTField = new JTextField(preferences.get(ipStart, ); panel_5.add(ipStartTField); final JPanel panel_6 = new JPanel(); panel_6.setLayout(new BoxLayout(panel_6, BoxLayout.X_AXIS); ipPanel.add(panel_6); panel_6.add(new JLabel(终止IP:); ipEndTField = new JTextField(preferences.get(ipEnd, 55); panel_6.add(ipEndTField); final JButton ipOKButton = new JButton(确定); ipOKButton.setActionCommand(ipOK); ipOKButton.addActionListener(new SysSetPanelOKListener(); sysSetPanel.add(ipOKButton); return scrollPane; /- private JScrollPane createUserList()/ 用户列表面板 JScrollPane scrollPane = new JScrollPane(); scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); addUserPopup(chatTree,getPopupMenu();/ 为用户添加弹出菜单 scrollPane.setViewportView(chatTree); scrollPane.setBorder(new EmptyBorder(0,0,0,0); chatTree.addMouseListener(new ChatTreeMouseListener(); return scrollPane; /- private JScrollPane createSysToolPanel() / 系统工具面板 JPanel sysToolPanel = new JPanel(); / 系统工具面板 sysToolPanel.setLayout(new BorderLayout(); JScrollPane sysToolScrollPanel = new JScrollPane(); sysToolScrollPanel .setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); sysToolScrollPanel.setBorder(new EmptyBorder(0, 0, 0, 0); sysToolScrollPanel.setViewportView(sysToolPanel); sysToolPanel.setBorder(new BevelBorder(BevelBorder.LOWERED); JPanel interfacePanel = new JPanel(); sysToolPanel.add(interfacePanel, BorderLayout.NORTH); interfacePanel.setLayout(new BorderLayout(); interfacePanel.setBorder(new TitledBorder(界面选择-再次启动生效); faceList = new JList(new String当前系统, java默认); interfacePanel.add(faceList); faceList.setBorder(new BevelBorder(BevelBorder.LOWERED); final JPanel interfaceSubPanel = new JPanel(); interfaceSubPanel.setLayout(new FlowLayout(); interfacePanel.add(interfaceSubPanel, BorderLayout.SOUTH); selectInterfaceOKButton = new JButton(确定); selectInterfaceOKButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) preferences.put(lookAndFeel, faceList.getSelectedValue().toString(); JOptionPane.showMessageDialog(EQ.this, 重新运行本软件后生效); ); interfaceSubPanel.add(selectInterfaceOKButton); JPanel searchUserPanel = new JPanel(); / 用户搜索面板 sysToolPanel.add(searchUserPanel); searchUserPanel.setLayout(new BorderLayout(); final JPanel searchControlPanel = new JPanel(); searchControlPanel.setLayout(new GridLayout(0, 1); searchUserPanel.add(searchControlPanel, BorderLayout.SOUTH); final JList searchUserList = new JList(new String检测用户列表);/ 新添加用户列表 final JScrollPane scrollPane_2 = new JScrollPane(searchUserList); scrollPane_2.setDoubleBuffered(true); searchUserPanel.add(scrollPane_2); searchUserList.setBorder(new BevelBorder(BevelBorder.LOWERED); searchUserButton = new JToggleButton(); searchUserButton.setText(搜索新用户); searchUserButton.addActionListener(new SearchUserActionListener(searchUserList); searchControlPanel.add(progressBar); searchControlPanel.add(searchUserButton); searchUserPanel.setBorder(new TitledBorder(搜索用户); final JPanel sysUpdatePanel = new JPanel(); sysUpdatePanel.setOpaque(false); sysUpdatePanel.setLayout(new GridBagLayout(); sysUpdatePanel.setBorder(new TitledBorder(系统操作); sysToolPanel.add(sysUpdatePanel, BorderLayout.SOUTH); final JButton sysUpdateButton = new JButton(系统更新); final GridBagConstraints gridBagConstraints_1 = new GridBagConstraints(); gridBagConstraints_1.gridx = 0; gridBagConstraints_1.gridy = 0; sysUpdatePanel.add(sysUpdateButton, gridBagConstraints_1); sysUpdateButton.addActionListener(new SysUpdateListener();/ 添加系统更新事件 final JLabel updateLabel = new JLabel(最近更新:); final GridBagConstraints updateLabelLayout = new GridBagConstraints(); updateLabelLayout.gridy = 1; updateLabelLayout.gridx = 0; sysUpdatePanel.add(updateLabel, updateLabelLayout); final JLabel updateDateLabel = new JLabel();/ 程序更新日期标签 Date date = new Date(localFile.lastModified(); String dateStr = String.format(%tF %tr, date); updateDateLabel.setText(dateStr); final GridBagConstraints updateDateLayout = new GridBagConstraints(); updateDateLayout.gridy = 2; updateDateLayout.gridx = 0; sysUpdatePanel.add(updateDateLabel, updateDateLayout); final JLabel updateStaticLabel = new JLabel(更新状态:); final GridBagConstraints updateStaticLayout = new GridBagConstraints(); updateStaticLayout.gridy = 3; updateStaticLayout.gridx = 0; sysUpdatePanel.add(updateStaticLabel, updateStaticLayout); final JLabel updateInfoLabel = new JLabel();/ 版本信息标签 checkSysInfo(updateInfoLabel);/ 调用检测版本更新的方法 final GridBagConstraints gridBagConstraints_5 = new GridBagConstraints(); gridBagConstraints_5.gridy = 4; gridBagConstraints_5.gridx = 0; sysUpdatePanel.add(updateInf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论