JFileChooserのタイトルバーのIconImageを変更する
Total: 3084
, Today: 1
, Yesterday: 1
Posted by aterai at
Last-modified:
概要
JFileChooser
のタイトルバーアイコンを親のJFrame
とは別のアイコンに変更します。
Screenshot
Advertisement
サンプルコード
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, Kotlin解説
上記のサンプルでは、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
のサイズが適用される?
参考リンク
- 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