系统托盘上的空白图标

时间:2018-07-11 13:17:32

标签: java trayicon

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

我的项目结构如下:

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来检查是否向其添加了图标。

我在做什么错了?

1 个答案:

答案 0 :(得分:2)

您的图像很可能大于纸盘图标的尺寸并被裁剪。这就是为什么您将图标显示为空白的原因。所以你必须设定 trayIcon.setImageAutoSize(true);

JavaDoc:

  

public void setImageAutoSize (布尔自动大小)

     

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

     

如果自动尺寸设置为false,并且图像尺寸与进纸匣图标不匹配   空间,则图像会在该空间内原样绘制-如果大于   分配的空间,将被裁剪

     

如果自动调整大小为 true ,则图像被拉伸或缩小适合托盘   图标空间。