Javaを使用してシステムトレイにアイコンを追加して表示しようとしています。ただし、アイコンは常に小さすぎるか、領域が途切れています。わかりにくいので左から2番目です。
ここで何が間違っていますか?このアイコンを完全に表示するにはどうすればよいですか? システム トレイに使用される標準のアイコン サイズは?
編集: AWT SystemTray と TrayIcon を使用しています
Javaを使用してシステムトレイにアイコンを追加して表示しようとしています。ただし、アイコンは常に小さすぎるか、領域が途切れています。わかりにくいので左から2番目です。
ここで何が間違っていますか?このアイコンを完全に表示するにはどうすればよいですか? システム トレイに使用される標準のアイコン サイズは?
編集: AWT SystemTray と TrayIcon を使用しています
ディスクから実際の画像リソースを取得した後、オンザフライで「偽の」リソースを作成し、その幅を取ることで、必要なサイズにサイズ変更できます。
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
}
によるとTrayIcon.setImageAutoSize(boolean)
。
自動サイズ プロパティを設定します。[自動サイズ] は、トレイ上のイメージに割り当てられたスペースに合わせてトレイ イメージのサイズを自動的に調整するかどうかを決定します。デフォルトでは、auto-size プロパティは false に設定されています。
auto-size が false で、画像サイズがトレイ アイコン スペースと一致しない場合、画像はそのスペース内にそのまま描画されます。割り当てられたスペースよりも大きい場合はトリミングされます。