系统托盘图标看起来失真
2022-09-02 11:36:54
我正在尝试使用Java添加一个图标并显示到系统托盘中。但是,图标总是太小,或者在区域中被切断。它是左起的第二个,以防你无法分辨。
我在这里做错了什么?如何使此图标完全显示?用于系统托盘的标准图标大小是多少?
编辑:我正在使用AWT系统托盘和托盘图标
我正在尝试使用Java添加一个图标并显示到系统托盘中。但是,图标总是太小,或者在区域中被切断。它是左起的第二个,以防你无法分辨。
我在这里做错了什么?如何使此图标完全显示?用于系统托盘的标准图标大小是多少?
编辑:我正在使用AWT系统托盘和托盘图标
从磁盘检索到实际的图像资源后,可以通过动态创建“假”图像并获取其宽度,将其大小调整为所需的大小。
我发现这比使用该方法更好,因为该方法根本无法平滑地缩放图像。setImageAutoSize(true)
BufferedImage trayIconImage = ImageIO.read(getClass().getResource("/path/to/icon.png"));
int trayIconWidth = new TrayIcon(trayIconImage).getSize().width;
TrayIcon trayIcon = new TrayIcon(trayIconImage.getScaledInstance(trayIconWidth, -1, Image.SCALE_SMOOTH));
要以最佳大小显示图标,您需要手动将其大小调整为正确的大小。这个正确的大小可能因操作系统和首选项而异,因此Java提供了一种获取任务栏图标尺寸的方法,在示例图像的情况下,这些尺寸为16x16。
if (SystemTray.isSupported()) {
SystemTray tray = SystemTray.getSystemTray();
Dimension trayIconSize = tray.getTrayIconSize();
// resize icon image to trayIconSize
// create your tray icon off of the resized image
}