⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eq.java

📁 java Swing 和java DB数据库开发的类似QQ的聊天工具。
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
package com.lzw;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dialog;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Frame;
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.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.beans.PropertyChangeEvent;
import java.beans.VetoableChangeListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.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.DefaultComboBoxModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
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.EmptyBorder;
import javax.swing.border.TitledBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.text.InternationalFormatter;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;

import com.lzw.dao.Dao;
import com.lzw.frame.TelFrame;
import com.lzw.system.Resource;
import com.lzw.userList.ChatTree;
import com.lzw.userList.User;

public class EQ extends Dialog {
	private JTextField ipEndTField;
	private JTextField ipStartTField;
	private JTextField userNameTField;
	private JPasswordField passwordTField;
	private JTextField placardPathTField;
	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<String> messageStack;
	private ImageIcon messageAlertIcon;
	private ImageIcon messageAlertNullIcon;
	private Rectangle location;
	public static TrayIcon trayicon;
	private Dao dao;
	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 Frame());
		frame = this;
		dao = Dao.getDao();
		location = dao.getLocation();
		setTitle("EQ通讯");
		setBounds(location);
		progressBar = new JProgressBar();
		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(); // 状态栏标签
		addWindowListener(new FrameWindowListener());// 添加窗体监视器
		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<String>();
			messageAlertButton = new JButton();
			messageAlertButton.setHorizontalAlignment(SwingConstants.RIGHT);
			messageAlertButton.setContentAreaFilled(false);
			final JPanel BannerPanel = new JPanel();
			BannerPanel.setLayout(new BorderLayout());
			add(BannerPanel, BorderLayout.NORTH);
			userInfoButton = new JButton();
			BannerPanel.add(userInfoButton, BorderLayout.WEST);
			userInfoButton.setMargin(new Insets(0, 0, 0, 10));
			initUserInfoButton();// 初始化本地用户头像按钮
			BannerPanel.add(messageAlertButton, BorderLayout.CENTER);
			messageAlertButton.addActionListener(new ActionListener() {
				public void actionPerformed(final ActionEvent e) {
					if (!messageStack.empty()) {
						showMessageDialog(messageStack.pop());
					}
				}
			});
			messageAlertButton.setIcon(messageAlertIcon);
			showMessageBar();
		}
		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(), "系统设置");
		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("系统路径"));
		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", "192.168.0.1"));
		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", "192.168.1.255"));
		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;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -