📄 smart.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 + -