当前位置: 首页 > 面试题库 >

如何将Java应用程序放入系统托盘?

彭正谊
2023-03-14
问题内容

我有一个小控制面板,只是我做的一个小应用程序。我想最小化/使用系统图标上下控制面板,以及电池寿命,日期,网络等。

有人可以给我一个提示,链接到教程或阅读的东西吗?


问题答案:

从Java
6开始,SystemTrayand
TrayIcon类支持此功能。SystemTray在Javadocs中有一个非常广泛的示例:

TrayIcon trayIcon = null;
if (SystemTray.isSupported()) {
    // get the SystemTray instance
    SystemTray tray = SystemTray.getSystemTray();
    // load an image
    Image image = Toolkit.getDefaultToolkit().getImage("your_image/path_here.gif");
    // create a action listener to listen for default action executed on the tray icon
    ActionListener listener = new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            // execute default action of the application
            // ...
        }
    };
    // create a popup menu
    PopupMenu popup = new PopupMenu();
    // create menu item for the default action
    MenuItem defaultItem = new MenuItem(...);
    defaultItem.addActionListener(listener);
    popup.add(defaultItem);
    /// ... add other items
    // construct a TrayIcon
    trayIcon = new TrayIcon(image, "Tray Demo", popup);
    // set the TrayIcon properties
    trayIcon.addActionListener(listener);
    // ...
    // add the tray image
    try {
        tray.add(trayIcon);
    } catch (AWTException e) {
        System.err.println(e);
    }
    // ...
} else {
    // disable tray option in your application or
    // perform other actions
    ...
}
// ...
// some time later
// the application state has changed - update the image
if (trayIcon != null) {
    trayIcon.setImage(updatedImage);
}
// ...

您也可以查看本文或此技术提示。



 类似资料:
  • 我希望将一个图像从我的桌面拖放到我的JPanel/Jframe上,然后能够将该图像存储到一个BufferedImage对象中,并对其执行id喜欢的操作 有没有办法用MouseListener做到这一点? 这是一个虚构的完美世界的例子,我可以在其中做到这一点 我希望你能明白。不是在寻找超复杂的东西。我是个笨蛋,尽量简单谢谢:)

  • 问题内容: 我遇到了一些我无法解决的问题…我正在编写带有JList的Swing Java应用程序,该JList可以接受拖放操作。我想在通过Java应用程序从系统中拖动文件或文件夹时更改光标。 问题答案: 我自己找到了……不过感谢克林顿的回答。这是我使用的: 首先创建JList …大家都知道该怎么做…然后添加了setDropTarget:

  • 我在Android上尝试了以下内容: 从Firebase控制台发送通知:只有当应用程序位于后台时,我才能在系统托盘中看到通知。 将post请求发送到(如本文所述),同时使用和Paylods:同样,我只能在应用程序位于后台时在系统托盘中看到通知。 该文件提到: 我用的是Android和Cordova/Ionic。

  • 将图标和上下文菜单添加到系统托盘。 进程: 主进程​ Tray是一个[EventEmitter][event-emitter]. 1 const {app, Menu, Tray} = require('electron') 2 let tray = null 3 app.on('ready', () => { 4 tray = new Tray('/path/to/my/icon') 5 con

  • 系统托盘 添加图标和上下文菜单到系统通知区 进程:主进程 Tray 是一个 EventEmitter. const { app, Menu, Tray } = require('electron') let tray = null app.on('ready', () => { tray = new Tray('/path/to/my/icon') const contextMenu =