系统托盘图标看起来失真

2022-09-02 11:36:54

我正在尝试使用Java添加一个图标并显示到系统托盘中。但是,图标总是太小,或者在区域中被切断。它是左起的第二个,以防你无法分辨。

我在这里做错了什么?如何使此图标完全显示?用于系统托盘的标准图标大小是多少?

编辑:我正在使用AWT系统托盘和托盘图标


答案 1

从磁盘检索到实际的图像资源后,可以通过动态创建“假”图像并获取其宽度,将其大小调整为所需的大小。

我发现这比使用该方法更好,因为该方法根本无法平滑地缩放图像。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));

答案 2

要以最佳大小显示图标,您需要手动将其大小调整为正确的大小。这个正确的大小可能因操作系统和首选项而异,因此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
}

推荐