?? smart.java
字號(hào):
/* * @(#) Smart.java * Copyright 2004 HWStudio. All rights reserved. */package hws.item.smart;//導(dǎo)入核心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;//導(dǎo)入自定義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;//導(dǎo)入第三方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 { /*------------------------------------------------------------------------* * 屬性定義 * *------------------------------------------------------------------------*/ /** * 該類自身的一個(gè)靜態(tài)引用 */ private static Smart smart; /** * 系統(tǒng)托盤 */ private static TrayIcon tray; /*------------------------------------------------------------------------* * 構(gòu)造函數(shù) * *------------------------------------------------------------------------*/ /** * 構(gòu)造函數(shù)為私有,這樣在整個(gè)運(yùn)行過程中該類就只能有一個(gè)實(shí)例 */ private Smart() { super(); //窗體設(shè)置 setSize(800, 600); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); setIconImage(ImageShop.TITLE_IMAGEICON.getImage()); setTitle(getRawTitle()); addWindowListener(new WindowAdapter() { //點(diǎn)擊窗體上的“關(guān)閉”按鈕時(shí)觸發(fā) public void windowClosing(WindowEvent event) { ExitAction.getInstance().actionPerformed(null); } //點(diǎn)擊窗體上的“最小化”按鈕時(shí)觸發(fā) public void windowIconified(WindowEvent event) { setVisible(false); ActionCenter.getInstance().setActionWhenHide(); } //窗體上激活時(shí)觸發(fā) 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); //功能區(qū) JSplitPane spliter = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, NavigationBar.getInstance(), FunctionPanel.getInstance()); spliter.setEnabled(false); spliter.setDividerLocation(80); contentPane.add(spliter, BorderLayout.CENTER); //狀態(tài)欄 contentPane.add(StatusBar.getInstance(), BorderLayout.SOUTH); //系統(tǒng)托盤 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(); } } }); } /*------------------------------------------------------------------------* * 公共方法 * *------------------------------------------------------------------------*/ /** * 對(duì)該類提供的一個(gè)全局訪問點(diǎn),用來實(shí)例化該對(duì)象 * * @return 該類唯一的一個(gè)實(shí)例 */ 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(); } } } /*------------------------------------------------------------------------* * 私有方法 * *------------------------------------------------------------------------*/ /** * 返回原始標(biāo)題 * * @return 原始標(biāo)題 */ private String getRawTitle() { StringBuffer title = new StringBuffer(); title.append(XMLConfig.getSoftwareName()); title.append(" "); title.append(XMLConfig.getSoftwareVersion()); return title.toString(); } /** * 生成請(qǐng)求URL * * @return 生成的請(qǐng)求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請(qǐng)求消息 * * @return 生成的XML-RPC請(qǐng)求消息 */ private XmlRpcRequest genRequest() { //請(qǐng)求方法 StringBuffer method = new StringBuffer(); method.append(XMLConfig.getLogoutClass()); method.append("."); method.append(XMLConfig.getLogoutMethod()); //請(qǐng)求參數(shù) 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); } /*------------------------------------------------------------------------* * 靜態(tài)塊 * *------------------------------------------------------------------------*/ //檢測(cè)Java的版本是否是1.4以上,不是則退出系統(tǒng) static { String version = System.getProperty("java.version"); if (version.compareTo("1.4") < 0) { JOptionPane.showMessageDialog(getInstance(), "本軟件必須運(yùn)行在JRE1.4或以上版本!", "注意", JOptionPane.INFORMATION_MESSAGE); System.exit(1); } } /*------------------------------------------------------------------------* * 執(zhí)行入口 * *------------------------------------------------------------------------*/ /** * 主方法,程序執(zhí)行的入口 * * @param args 執(zhí)行時(shí)的參數(shù)選項(xiàng) */ public static void main(String args[]) { //設(shè)置外觀 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()); //添加系統(tǒng)托盤 SystemTray.getDefaultSystemTray().addTrayIcon(tray); }}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -