Java 系统托盘上的空白图标
我试图在系统托盘中添加一个图标,但是,当我运行应用程序时,图标是空白的 我的项目结构如下:Java 系统托盘上的空白图标,java,trayicon,Java,Trayicon,我试图在系统托盘中添加一个图标,但是,当我运行应用程序时,图标是空白的 我的项目结构如下: root/ libs/ ... src/ com/ projname/ logic/ ... ui/ MyClass.java ... res/ icon.png 我试图在MyClass.java中添加图标,如下所示: private void addToSyste
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
,以检查图标是否被添加到其中,并且确实如此
我做错了什么?很可能您的图像大于托盘图标的大小,并被裁剪。这就是为什么您将图标视为空白。所以你必须设定,
trayIcon.setImageAutoSize(真)代码>
JavaDoc:
public void设置图像自动大小(布尔自动大小)
设置“自动大小”属性。“自动大小”确定托盘是否正确
图像自动调整大小以适合为图像分配的空间
在托盘上。默认情况下,自动大小属性设置为false
如果“自动大小”为false,并且图像大小与托盘图标不匹配
空间中,图像按空间内的状态绘制-如果大于
分配的空间将被裁剪
如果“自动大小”为真,则图像将拉伸或收缩以适合托盘
图标空间
Image=newImageIcon(MyClass.class.getResource(“/icon.png”)).getImage()代码>@JoopEggen没有解决它-同样的问题。是的,您使用了javadoc示例<代码>trayIcon.setImageAutoSize(真)代码>也许吧。@JoopEggen谢谢,这就解决了它!