激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java實現系統托盤示例

java實現系統托盤示例

2019-11-13 12:55java教程網 JAVA教程

桌面的系統托盤即當程序最小化或者關閉按鈕程序并沒有退出,而是最小化在任務狀態區域,下面是使用java實現系統托盤示例

桌面的系統托盤即當程序最小化或者關閉按鈕程序并沒有退出,而是最小化在任務狀態區域(Windows系統),當鼠標點擊那個區域所在的圖標有提示以及其他的操作。在 Microsoft Windows 上,它被稱為“任務欄狀態區域 (Taskbar Status Area)”,在 Gnome 上,它被稱為“通知區域 (Notification Area)”,在 KDE 上,它被成為“系統托盤 (System Tray)”。系統托盤由運行在桌面上的所有應用程序共享。
jdk1.6 中新增了兩個類來實現:
SystemTray和 TrayIcon,以下為詳細介紹:

SystemTray
類介紹: 
在某些平臺上,可能不存在或不支持系統托盤,所以要首先使用SystemTray.isSupported()來檢查當前的系統是否支持系統托盤

SystemTray可以包含一個或多個 TrayIcon,可以使用 add(java.awt.TrayIcon)方法將它們添加到托盤,當不再需要托盤時,使用 remove(java.awt.TrayIcon)
移除它。

TrayIcon由圖像、彈出菜單和一組相關偵聽器組成。每個 Java 應用程序都有一個 SystemTray實例,在應用程序運行時,它允許應用程序與桌面系統托盤建立連接。
SystemTray實例可以通過getSystemTray ()方法獲得。應用程序不能創建自己的 SystemTray

 

復制代碼代碼如下:


import java.awt.AWTException;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowEvent;
import java.awt.event.WindowStateListener;

 

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.Timer;
import javax.swing.UIManager;

/**
 *
 * @author Mr.LiuTao
 */
public class TrayByJdk extends JFrame implements ActionListener{

    private JPanel pane = null;
    private JButton button = null; // 啟動托盤圖標的按鈕
    private JLabel label = null; // 用來顯示系統是否支持托盤的信息
    private TrayIcon trayIcon = null; // 托盤圖標
    private Timer shanshuo = null;
    private ImageIcon icon1 = null;
    private ImageIcon icon2 = null;
    private SystemTray tray = null; // 本操作系統托盤的實例
    boolean gengai = false;
    //采用jdk1.6的托盤技術 實現跨平臺的應用
    public TrayByJdk() {
        //super("托盤技術演示");
        icon1 = new ImageIcon("G:\\javaworks\\eclipsework\\山寨QQClient\\images\\16.gif"); // 將要顯示到托盤中的圖標
        icon2 = new ImageIcon("G:\\javaworks\\eclipsework\\山寨QQClient\\images\\15.gif"); // 將要顯示到托盤中的圖標
        try {
            // 將LookAndFeel設置成Windows樣式
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        pane = new JPanel();
        button = new JButton("縮小到托盤");
        button.setEnabled(false);
        label = new JLabel("本操作系統不支持托盤");
        pane.add(label);
        pane.add(button);
        //判斷是否支持托盤
        if (SystemTray.isSupported()) {
            this.tray();
        }
        shanshuo = new Timer(1000,this);
        shanshuo.start();
        this.getContentPane().add(pane);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(300, 200);
        this.addWindowStateListener(new WindowStateListener () {
   public void windowStateChanged(WindowEvent state) {
    if(state.getNewState() == 1 || state.getNewState() == 7) {
     yinca();
    }
   }
  });

        this.setVisible(false);
        System.out.println("=============="+this.isVisible());
    }

    /**
     * 托盤相關代碼
     */
    private void tray() {
        label.setText("本操作系統支持托盤");
        button.setEnabled(true);
        tray = SystemTray.getSystemTray(); // 獲得本操作系統托盤的實例
        //ImageIcon icon = new ImageIcon("tray.gif"); // 將要顯示到托盤中的圖標
        PopupMenu pop = new PopupMenu(); // 構造一個右鍵彈出式菜單
        MenuItem show = new MenuItem("顯示窗口");
        MenuItem exit = new MenuItem("退出演示");
        MenuItem author = new MenuItem("Author");       
        /**
         * TrayIcon有三個構造
         * TrayIcon(Image image) 用“圖標”來構造
         * TrayIcon(Image image, String tooltip) 用“圖標”和“ToolTip”構造
         * TrayIcon(Image image, String tooltip, PopupMenu popup) 用“圖標”,“ToolTip”,“彈出菜單”來構造一個托盤圖標
         */
        trayIcon = new TrayIcon(icon1.getImage(), "托盤技術演示", pop);
        // 點擊本按鈕后窗口被關閉,托盤圖標被添加到系統的托盤中
        button.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                try {
                    tray.add(trayIcon); // 將托盤圖標添加到系統的托盤實例中
                    setVisible(false); // 使窗口不可視
                } catch (AWTException ex) {
                    ex.printStackTrace();
                }
            }
        });
        /**
         * 添加鼠標監聽器,當鼠標在托盤圖標上雙擊時,默認顯示窗口
         */
        trayIcon.addMouseListener(new MouseAdapter() {

            public void mouseClicked(MouseEvent e) {
                if (e.getClickCount() == 2) { // 鼠標雙擊
                    tray.remove(trayIcon); // 從系統的托盤實例中移除托盤圖標
                    setVisible(true); // 顯示窗口
                }
            }
        });
        show.addActionListener(new ActionListener() { // 點擊“顯示窗口”菜單后將窗口顯示出來

            public void actionPerformed(ActionEvent e) {
                tray.remove(trayIcon); // 從系統的托盤實例中移除托盤圖標
                setVisible(true); // 顯示窗口
            }
        });
        exit.addActionListener(new ActionListener() { // 點擊“退出演示”菜單后推出程序

            public void actionPerformed(ActionEvent e) {
                System.exit(0); // 退出程序
            }
        });
        author.addActionListener(new ActionListener() { // 點擊“退出演示”菜單后推出程序

            public void actionPerformed(ActionEvent e) {
                showMessage();
            }
        });
        pop.add(show);
        pop.add(exit);
        pop.add(author);
    }
    /**
     * 顯示信息
     */
    private void showMessage() {
        JOptionPane.showMessageDialog(this, new JLabel("這是一個系統托盤"), "消息", JOptionPane.INFORMATION_MESSAGE);
    }
    public static void main(String[] args) {
        new TrayByJdk().yinca();
    }
    public void yinca(){
      try {
   tray.add(trayIcon);
  } catch (AWTException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } // 將托盤圖標添加到系統的托盤實例中
         setVisible(false); // 使窗口不可視
    }
 @Override
 public void actionPerformed(ActionEvent arg0) {
  if(!gengai){
   trayIcon.setImage(icon2.getImage());
   gengai = true;
  }else{
   trayIcon.setImage(icon1.getImage());
   gengai = false;
  }
 }
}

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久久aa | 日韩色视频 | 九九热视频这里只有精品 | 国产99久久久久久免费看农村 | 国产黄色一区二区 | 激情小说激情电影 | 香蕉久草在线 | 深夜福利视频绿巨人视频在线观看 | 九九热精品在线 | 91短视频在线观看 | 伊人午夜 | 久草手机在线视频 | 吾色视频 | 久久久久久久久久一本门道91 | 精品亚洲一 | 国产在线1区| 欧美日韩视频第一页 | 日韩欧美高清一区 | 国产1区2区3区中文字幕 | 国产papa| 国产成人高清在线观看 | 欧美黄色一级片在线观看 | 国产高潮好爽受不了了夜色 | 久久精品综合视频 | 国产欧美精品综合一区 | 超碰人人做人人爱 | 久草成人在线 | 欧美日韩激情 | 九九视屏 | 久久2019中文字幕 | 91精品国产91| 国语自产免费精品视频在 | 黄色网址在线播放 | 视频一区二区三区中文字幕 | 午夜av男人的天堂 | 欧美wwwwww| 国产亚洲精品久久久久5区 99精品视频在线 | 一级免费黄色免费片 | 国产精品高潮99久久久久久久 | 视频一区二区在线播放 | 羞羞网站|