源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

java实现系统托盘示例

  • 时间:2020-11-14 19:40 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要: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
[u]复制代码[/u] 代码如下:
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;   }  } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部