我试图在系统托盘中添加一个图标,但是,当我运行该应用程序时,该图标为空白。
我的项目结构如下:
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
来检查是否向其添加了图标。
我在做什么错了?
答案 0 :(得分:2)
您的图像很可能大于纸盘图标的尺寸并被裁剪。这就是为什么您将图标显示为空白的原因。所以你必须设定
trayIcon.setImageAutoSize(true);
JavaDoc:
public void setImageAutoSize (布尔自动大小)
设置自动调整大小属性。自动调整大小确定纸盘是否 图像会自动调整大小以适合为图像分配的空间 在托盘上。通过默认,auto-size属性设置为 false 。
如果自动尺寸设置为false,并且图像尺寸与进纸匣图标不匹配 空间,则图像会在该空间内原样绘制-如果大于 分配的空间,将被裁剪。
如果自动调整大小为 true ,则图像被拉伸或缩小以适合托盘 图标空间。