JFileChooserのタイトルバーのIconImageを変更する
Total: 3584, Today: 1, Yesterday: 0
Posted by aterai at
Last-modified:
Summary
JFileChooserのタイトルバーアイコンを親のJFrameとは別のアイコンに変更します。
Screenshot

Advertisement
Source Code Examples
JButton button2 = new JButton("makeImage(16, Color.WHITE)");
button2.addActionListener(e -> {
JFileChooser fileChooser = new JFileChooser() {
@Override protected JDialog createDialog(Component p) throws HeadlessException {
JDialog dialog = super.createDialog(p);
dialog.setIconImage(makeImage(16, Color.WHITE));
return dialog;
}
};
fileChooser.showOpenDialog(getRootPane());
});
View in GitHub: Java, KotlinDescription
上記のサンプルでは、JFileChooserのタイトルバーに表示されるウィンドウのアイコンを親のJFrameとは別のアイコンに変更しています。
default icon- デフォルトの
JFileChooserのウィンドウアイコンには親JFrameのウィンドウアイコンが適用される
- デフォルトの
makeImage(16, Color.WHITE)- 直接
JFileChooserのウィンドウアイコンを変更するメソッドはデフォルトでは存在しないのでJFileChooser#createDialog(...)メソッドをオーバーライドしJFileChooserが使用するJDialogに別アイコンを設定 Window#setIconImage(Image)でウィンドウアイコンを設定した場合適当な大きさにリサイズされる- 「適当な大きさ」は環境や表示スケールなどによって変化する?
- 例:
Windows 10で表示スケール100%の場合のウィンドウアイコン:16x16 - 例:
Windows 10で表示スケール125%の場合のウィンドウアイコン:20x20
- 例:
- 直接
JFrame.setDefaultLookAndFeelDecorated(true);でデフォルトLookAndFeelのウィンドウ修飾をタイトルバーに適用する場合、表示スケールに関係なくウィンドウアイコンには16x16のサイズが適用される?
Reference
- java - Sizes of frame icons used in Swing - Stack Overflow
- JFrameのIconを変更
- JDK-6429220 Default LAF decorated frame does not support transparent icons - Java Bug System