代碼分享:實(shí)現(xiàn)系統(tǒng)托盤效果
作者:lxw出山小草
這段代碼是能夠在桌面任務(wù)欄上實(shí)現(xiàn)托盤效果,初學(xué)Java的朋友可以研究。
代碼說(shuō)明:
在桌面工具欄上顯示托盤
代碼片段:
- import java.awt.AWTException;
- import java.awt.Image;
- import java.awt.MenuItem;
- import java.awt.PopupMenu;
- import java.awt.SystemTray;
- import java.awt.Toolkit;
- import java.awt.TrayIcon;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.MouseEvent;
- import java.io.UnsupportedEncodingException;
- import java.net.URL;
- import javax.swing.ImageIcon;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- public class SystemTrayDemo extends JFrame{
- private TrayIcon trayIcon = null;
- public SystemTrayDemo(){
- this.setTitle("系統(tǒng)托盤");
- jbInit();
- this.setSize(200, 250);
- this.setLocation(300, 300);
- }
- public void jbInit(){
- if(SystemTray.isSupported()){ //檢查當(dāng)前系統(tǒng)是否支持系統(tǒng)托盤
- SystemTray tray = SystemTray.getSystemTray();//獲取表示桌面托盤區(qū)的 SystemTray 實(shí)例。
- Image image = Toolkit.getDefaultToolkit().getImage("newrobot1_256.png");
- PopupMenu popupMenu = new PopupMenu();
- MenuItem exitItem = new MenuItem("exit");
- System.out.println(exitItem.getFont());
- MenuItem menuItema = new MenuItem("menu a");
- MenuItem menuItemb = new MenuItem("menu b");
- MenuItem menuItemc = new MenuItem("menu c");
- MenuItem menuItemd = new MenuItem("menu d");
- exitItem.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e) {
- try{
- System.exit(0);
- }catch(Exception ex) {
- ex.printStackTrace();
- }
- }
- });
- popupMenu.add(menuItema);
- popupMenu.add(menuItemb);
- popupMenu.add(menuItemc);
- popupMenu.add(menuItemd);
- popupMenu.add(exitItem);
- trayIcon = new TrayIcon(image, "系統(tǒng)托盤{thu}", popupMenu);
- trayIcon.addMouseListener(new java.awt.event.MouseAdapter(){
- @Override
- public void mouseClicked(MouseEvent e) {
- if(e.getClickCount()==2){
- //注意下面的API調(diào)用,這個(gè)可以給用戶提示信息
- trayIcon.displayMessage("message", "double click",
- TrayIcon.MessageType.INFO);
- showIT(true);
- }
- }
- });
- //注意下面這個(gè)API調(diào)用,能夠保證使用的圖標(biāo)被縮放到合適的比例
- trayIcon.setImageAutoSize(true);
- try{
- tray.add(trayIcon); // 將 TrayIcon 添加到 SystemTray。
- } catch (AWTException e) {
- System.err.println(e);
- }
- }else{
- System.out.println("你的系統(tǒng)不支持系統(tǒng)托盤");
- }
- //下面這個(gè)部分是具體的業(yè)務(wù)邏輯
- ImageIcon icon = new ImageIcon();
- try{
- URL url = new URL("newrobot1_256.png");
- icon = new ImageIcon(url);
- }catch(Exception e){
- }
- JLabel label = new JLabel();
- label.setIcon(icon);
- this.add(label);
- }
- public void showIT(boolean visable){
- if(this.isVisible() != visable)
- this.setVisible(visable);
- }
- public static void main(String[] args) {
- javax.swing.SwingUtilities.invokeLater(new Runnable(){
- public void run(){
- new SystemTrayDemo().setVisible(true);
- }
- });
- }
- }
【效果圖】
原文鏈接:http://www.oschina.net/code/snippet_188162_8173
【編輯推薦】
責(zé)任編輯:林師授
來(lái)源:
開(kāi)源中國(guó)社區(qū)