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

📄 smart.java

📁 该系统是一个基于p2p的即时聊天系统
💻 JAVA
字号:
/* * @(#) Smart.java * Copyright 2004 HWStudio. All rights reserved. */package hws.item.smart;//导入核心Java类库import java.io.IOException;import java.awt.Font;import java.awt.Container;import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowEvent;import java.awt.event.WindowAdapter;import java.net.MalformedURLException;import java.util.Vector;import javax.swing.JFrame;import javax.swing.JMenuBar;import javax.swing.UIManager;import javax.swing.JSplitPane;import javax.swing.JOptionPane;import javax.swing.UnsupportedLookAndFeelException;//导入自定义Java类库import hws.item.smart.misc.ImageShop;import hws.item.smart.misc.ColorShop;import hws.item.smart.misc.XMLConfig;import hws.item.smart.misc.PopToolkit;import hws.item.smart.misc.ActionCenter;import hws.item.smart.menu.top.FileMenu;import hws.item.smart.menu.top.HelpMenu;import hws.item.smart.menu.top.ServiceMenu;import hws.item.smart.menu.pop.SystemTrayMenu;import hws.item.smart.action.file.ExitAction;import hws.item.smart.panel.statusbar.StatusBar;import hws.item.smart.panel.navbar.NavigationBar;import hws.item.smart.panel.function.FunctionPanel;import hws.item.smart.panel.function.chat.ViewPanel;//导入第三方Java类库import org.jdom.Element;import org.jdom.Document;import org.jdom.output.XMLOutputter;import org.apache.xmlrpc.XmlRpc;import org.apache.xmlrpc.XmlRpcClient;import org.apache.xmlrpc.XmlRpcRequest;import org.apache.xmlrpc.XmlRpcException;import org.jdesktop.jdic.tray.TrayIcon;import org.jdesktop.jdic.tray.SystemTray;/** * 集成通讯软件的主窗体 * * @version 0.1 2005-09-27 * @author Hwerz */public class Smart extends JFrame {    /*------------------------------------------------------------------------*     *                                属性定义                                *     *------------------------------------------------------------------------*/    /**     * 该类自身的一个静态引用     */    private static Smart smart;    /**     * 系统托盘     */    private static TrayIcon tray;    /*------------------------------------------------------------------------*     *                                构造函数                                *     *------------------------------------------------------------------------*/    /**     * 构造函数为私有,这样在整个运行过程中该类就只能有一个实例     */    private Smart() {        super();        //窗体设置        setSize(800, 600);        setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);        setIconImage(ImageShop.TITLE_IMAGEICON.getImage());        setTitle(getRawTitle());        addWindowListener(new WindowAdapter() {            //点击窗体上的“关闭”按钮时触发            public void windowClosing(WindowEvent event) {                ExitAction.getInstance().actionPerformed(null);            }            //点击窗体上的“最小化”按钮时触发            public void windowIconified(WindowEvent event) {                setVisible(false);                ActionCenter.getInstance().setActionWhenHide();            }            //窗体上激活时触发            public void windowActivated(WindowEvent event) {                ActionCenter.getInstance().setActionWhenNormal();            }        });        Container contentPane = getContentPane();        contentPane.setLayout(new BorderLayout());        //菜单栏        JMenuBar menuBar = new JMenuBar();        menuBar.add(FileMenu.getInstance());        menuBar.add(ServiceMenu.getInstance());        menuBar.add(HelpMenu.getInstance());        setJMenuBar(menuBar);        //功能区        JSplitPane spliter = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true,            NavigationBar.getInstance(), FunctionPanel.getInstance());        spliter.setEnabled(false);        spliter.setDividerLocation(80);        contentPane.add(spliter, BorderLayout.CENTER);        //状态栏        contentPane.add(StatusBar.getInstance(), BorderLayout.SOUTH);        //系统托盘        tray = new TrayIcon(ImageShop.TRAY_IMAGEICON, "Smart Net",            SystemTrayMenu.getInstance());        tray.setIconAutoSize(true);        tray.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent event) {                setVisible(!isVisible());                if (isVisible()) {                    setState(NORMAL);                    ActionCenter.getInstance().setActionWhenNormal();                } else {                    ActionCenter.getInstance().setActionWhenHide();                }            }        });    }    /*------------------------------------------------------------------------*     *                                公共方法                                *     *------------------------------------------------------------------------*/    /**     * 对该类提供的一个全局访问点,用来实例化该对象     *     * @return 该类唯一的一个实例     */    public static Smart getInstance() {        if (smart == null) {            smart = new Smart();        }        return smart;    }    /**     * 注销     */    public void logout() {        if (ViewPanel.getInstance().getUserID().length() > 0) {            try {                XmlRpc.setDriver("org.apache.xerces.parsers.SAXParser");                XmlRpcClient client = new XmlRpcClient(genURL());                client.execute(genRequest());            } catch (ClassNotFoundException e) {                e.printStackTrace();            } catch (MalformedURLException e) {                e.printStackTrace();            } catch (XmlRpcException e) {                e.printStackTrace();            } catch (IOException e) {                e.printStackTrace();            }        }    }    /*------------------------------------------------------------------------*     *                                私有方法                                *     *------------------------------------------------------------------------*/    /**     * 返回原始标题     *     * @return 原始标题     */    private String getRawTitle() {        StringBuffer title = new StringBuffer();        title.append(XMLConfig.getSoftwareName());        title.append(" ");        title.append(XMLConfig.getSoftwareVersion());        return title.toString();    }    /**     * 生成请求URL     *     * @return 生成的请求URL     */    private String genURL() {        StringBuffer url = new StringBuffer();        url.append("http://");        url.append(XMLConfig.getServicesIP());        url.append(":");        url.append(XMLConfig.getLogoutPort());        url.append("/");        return url.toString();    }    /**     * 生成XML-RPC请求消息     *     * @return 生成的XML-RPC请求消息     */    private XmlRpcRequest genRequest() {        //请求方法        StringBuffer method = new StringBuffer();        method.append(XMLConfig.getLogoutClass());        method.append(".");        method.append(XMLConfig.getLogoutMethod());        //请求参数        Vector params = new Vector();        XMLOutputter outputter = new XMLOutputter();        params.addElement(outputter.outputString(genDocument()));        return new XmlRpcRequest(method.toString(), params);    }    /**     * 生成XML文档     *     * @return 生成的XML文档     */    private Document genDocument() {        Element request = new Element("Request");        Element level1 = new Element("ID");        level1.addContent(ViewPanel.getInstance().getUserID());        request.addContent(level1);        level1 = new Element("IP");        level1.addContent(PopToolkit.getLocalIP());        request.addContent(level1);        return new Document(request);    }    /*------------------------------------------------------------------------*     *                                 静态块                                 *     *------------------------------------------------------------------------*/    //检测Java的版本是否是1.4以上,不是则退出系统    static {        String version = System.getProperty("java.version");        if (version.compareTo("1.4") < 0) {            JOptionPane.showMessageDialog(getInstance(),                "本软件必须运行在JRE1.4或以上版本!", "注意",                JOptionPane.INFORMATION_MESSAGE);            System.exit(1);        }    }    /*------------------------------------------------------------------------*     *                                执行入口                                *     *------------------------------------------------------------------------*/    /**     * 主方法,程序执行的入口     *     * @param args 执行时的参数选项     */    public static void main(String args[]) {        //设置外观        try {            String laf = "com.stefankrause.xplookandfeel.XPLookAndFeel";            UIManager.setLookAndFeel(laf);        } catch (ClassNotFoundException e) {            e.printStackTrace();        } catch (InstantiationException e) {            e.printStackTrace();        } catch (IllegalAccessException e) {            e.printStackTrace();        } catch (UnsupportedLookAndFeelException e) {            e.printStackTrace();        }        System.setProperty("javax.swing.adjustPopupLocationToFit", "true");        Object value = "+";        UIManager.put("MenuItem.acceleratorDelimiter", value);        value = ColorShop.UNEDITABLE_BG_COLOR;        UIManager.put("TextArea.background", value);        UIManager.put("TextField.inactiveBackground", value);        value = UIManager.get("TextField.border");        UIManager.put("PasswordField.border", value);        value = UIManager.get("TextField.selectionBackground");        UIManager.put("Table.selectionBackground", value);        UIManager.put("TextArea.selectionBackground", value);        UIManager.put("PasswordField.selectionBackground", value);        value = new Font("Serif", Font.PLAIN, 12);        UIManager.put("Menu.font", value);        UIManager.put("Button.font", value);        UIManager.put("MenuItem.font", value);        UIManager.put("TabbedPane.font", value);        UIManager.put("OptionPane.buttonFont", value);        //显示主窗体        PopToolkit.makeWindowCenter(getInstance());        //添加系统托盘        SystemTray.getDefaultSystemTray().addTrayIcon(tray);    }}

⌨️ 快捷键说明

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