【问题标题】:Blank icon on system tray系统托盘上的空白图标
【发布时间】:2018-07-11 13:17:31
【问题描述】:

我正在尝试向系统托盘添加一个图标,但是,当我运行应用程序时,该图标是空白的。

我的项目结构是这样的:

root/
  libs/
    ...
  src/
    com/
      projname/
        logic/
          ...
        ui/
          MyClass.java
          ...
  res/
    icon.png

我正在尝试在 MyClass.java 中添加图标,如下所示:

private void addToSystemTray() throws AWTException {

    if (!SystemTray.isSupported()) {
        return;
    }

    // get the SystemTray instance
    SystemTray tray = SystemTray.getSystemTray();

    // load an image
    Image image = Toolkit.getDefaultToolkit().getImage(getClass().getClassLoader().getResource("icon.png"));

    // construct tray icon
    TrayIcon trayIcon = new TrayIcon(image, "My Project");

    // add the tray image
    tray.add(trayIcon);
}

我在 IntelliJ 上将 res/ 文件夹标记为 Resources Root,并且我还构建了 .jar 来检查是否已将图标添加到其中 - 确实如此。

我做错了什么?

【问题讨论】:

  • Image image = new ImageIcon(MyClass.class.getResource("/icon.png")).getImage();
  • @JoopEggen 那没有解决 - 同样的问题。
  • 是的,您确实使用了 javadoc 示例。 trayIcon.setImageAutoSize(true); 也许。
  • @JoopEggen 谢谢,解决了!

标签: java trayicon


【解决方案1】:

很可能您的图像大于托盘图标大小并被裁剪。这就是为什么您会看到该图标为空白。所以你必须设置, trayIcon.setImageAutoSize(true);

JavaDoc:

public void setImageAutoSize(布尔自动调整大小)

设置自动大小属性。 Auto-size 确定托盘是否 图像会自动调整大小以适合为图像分配的空间 在托盘上。 默认,auto-size 属性设置为false

如果 auto-size 为 false,并且图像大小与托盘图标不匹配 空间,图像在该空间内按原样绘制 - 如果大于 分配的空间,它将被裁剪

如果 auto-size 为 true,则图像会拉伸或缩小适合托盘 图标空间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 2016-08-22
    • 1970-01-01
    • 2011-04-16
    相关资源
    最近更新 更多