Swing/FrameIcon のバックアップの現在との差分(No.14)
TITLE:JFrameのIconを変更
JFrameのIconを変更
編集者:Terai Atsuhiro~
作成日:2004-08-30
更新日:2021-07-06 (火) 18:52:52
概要
JFrame
のタイトルバー左に表示されているアイコンを別の画像に変更します。
Screenshot
Advertisement
概要
JFrameのタイトルバー左に表示されているアイコンを別の画像に変更します。サンプルコード
#spanend
#spanadd
MainPanel panel = new MainPanel();
#spanend
#spanadd
URL url = panel.getClass().getResource("16x16.png");
#spanend
#spanadd
JFrame frame = new JFrame();
#spanend
#spanadd
frame.setIconImage(Toolkit.getDefaultToolkit().createImage(url));
#spanend
#spanadd
View in GitHub: Java, Kotlin#screenshot
解説
JFrame#setIconImage
メソッドでJFrame
のタイトルバーなどに表示される画像を設定しています。
サンプルコード
- サンプル画像としてサイズ
16x16
の透過PNG
を使用 -
JDK 1.6.0
から、JFrame#setIconImage(Image)メソッドはWindow#setIconImage(Image)メソッドを使用するようになった - また
JDK 1.6.0
からWindow#setIconImages(List<? extends Image>)メソッドで複数のイメージを設定可能になった- 同サイズのイメージがある場合は、先頭から検索して最初のイメージが使用される
- どのサイズのイメージが使用されるかは環境に依存する
- 参考: java - Sizes of frame icons used in Swing - Stack Overflow
-
Window#setIconImage(Image)
とWindow#setIconImages(List<? extends Image>)
を両方使用した場合、後に実行したメソッドの設定が有効になる- たとえば以下のコードの場合、タイトルバーのアイコンは
ATTACHMENT_16x16-32.png
になる
- たとえば以下のコードの場合、タイトルバーのアイコンは
JFrame frame = new JFrame();
MainPanel panel = new MainPanel();
URL url = panel.getClass().getResource("16x16.png");
frame.setIconImage(Toolkit.getDefaultToolkit().createImage(url));
#spanadd
Toolkit tk = Toolkit.getDefaultToolkit();
#spanend
#spanadd
frame.setIconImage(tk.createImage(MainPanel.class.getResource("RECYCLE BIN - EMPTY_16x16-32.png")));
#spanend
#spanadd
frame.setIconImages(java.util.Arrays.asList(
#spanend
tk.createImage(MainPanel.class.getResource("ATTACHMENT_16x16-32.png")),
tk.createImage(MainPanel.class.getResource("wi0054-32.png"))));
- &jnlp;
- &jar;
- &zip;
解説
JFrame#setIconImageメソッドでアイコンを設定しています。- -
-
JFrame.setDefaultLookAndFeelDecorated(true);
でデフォルトLookAndFeel
のウィンドウ修飾をタイトルバーに適用する場合、JFrame#setIconImage(...)
で設定したアイコンが透過されない
#spanend
#spanadd
import java.awt.*;
#spanend
#spanadd
import javax.swing.*;
#spanend
#spandel
**参考リンク [#d3455ff6]
#spanend
-[[GIMP>http://www.gimp.org/]]
-[[TheGimp>http://www004.upp.so-net.ne.jp/iccii/]]
#spanadd
public class TransparentIconTest {
#spanend
public static void main(String[] args) {
EventQueue.invokeLater(() -> createAndShowGui());
}
#spandel
**コメント [#x176a30a]
#spanend
- %%Java SE 6 で試すとアイコンの表示が乱れる? -- [[terai]] &new{2006-06-29 (木) 17:57:16};%%
public static void createAndShowGui() {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame f = new JFrame();
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
ImageIcon icon = new ImageIcon(
TransparentIconTest.class.getResource("16x16.png"));
f.setIconImage(icon.getImage());
f.setSize(320, 240);
f.setLocationRelativeTo(null);
f.setVisible(true);
}
#spanadd
}
#spanend
#spanadd