{Kurung Kurawal}

Mengganti Icon JFrame

Ketika kita membuat aplikasi dengan Java Swing, pasti pernah berurusan dengan class JFrame. Secara default, Jframe akan menggunakan icon Java (cangkir dengan asap), ketika dijalankan pada sistem operasi yang mendukung icon tersebut, misalnya Windows. Berikut saya berikan tutorial mengganti icon tersebut.

Siapkan sebuah file gambar, misalnya dengan format PNG, jika butuh transparansi yang bagus. File jpg, gif, dan format gambar lain juga bisa, asal telah disupport Java, hal ini tidak dibahas di tutorial ini.

Pada tutorial ini, file gambar tersebut dirancang agar masuk kedalam file JAR ketika aplikasi java kita ini dijalankan. Dengan demikian, file gambar tersebut akan dipanggil dengan methode getResource(). Karena itu, pastikan Anda telah meletakkan gambar pada lokasi yang sesuai.

File JFrameIcon.java, letakkan di folder src/jframeicon/. File gambar, disini dianggap bernama sample_icon.png diletakkan berdampingan dengan file JFrameIcon.java tersebut. Atau perhatikan gambar berikut pada Netbeans.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package jframeicon;
 
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.border.Border;
 
/**
 *
 * @author konglie
 */
public class JFrameIcon extends JFrame {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        new JFrameIcon();
    }
 
    public JFrameIcon(){
        super("JFrame dengan icon");
 
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setMinimumSize(new Dimension(300,120));
 
        // set jframe icon
        ImageIcon icon = new ImageIcon(JFrameIcon.class.getResource("/jframeicon/sample_icon.png"));
        setIconImage(icon.getImage());
 
        Border padding = BorderFactory.createEmptyBorder(10,10,10,10);
        JPanel body = new JPanel();
        body.setBorder(padding);
        body.setLayout(new BoxLayout(body, BoxLayout.PAGE_AXIS));
        JLabel hello = new JLabel("<html><center>Hello World!<br/>"
                + "Perhatikan Icon Jframe ini.</center></html>");
        hello.setHorizontalAlignment(SwingConstants.CENTER);
        hello.setAlignmentX(CENTER_ALIGNMENT);
        JButton btn = new JButton("Tampilkan Dialog");
        btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JDialog dlg = new JDialog(JFrameIcon.this);
 
                // set icon
                dlg.setIconImage(icon.getImage());
 
                JLabel lbl = new JLabel(
                        "<html>&copy; ali LIM ( kurungkurawal.com )</html>"
                );
                lbl.setBorder(padding);
                lbl.setHorizontalAlignment(SwingConstants.CENTER);
                lbl.setAlignmentX(CENTER_ALIGNMENT);
                dlg.getContentPane().add(lbl, 
                        BorderLayout.CENTER);
 
                JButton btnClose = new JButton("Okay");
                btnClose.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        dlg.setVisible(false);
                        dlg.dispose();
                    }
                });
                dlg.getContentPane().add(btnClose, BorderLayout.SOUTH);
 
                ((JComponent)dlg.getContentPane()).setBorder(padding);
                dlg.setModal(true);
                dlg.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                dlg.pack();
                dlg.setLocationRelativeTo(JFrameIcon.this);
                dlg.setVisible(true);
            }
        });
        btn.setAlignmentX(CENTER_ALIGNMENT);
 
        body.add(hello);
        body.add(Box.createVerticalGlue());
        body.add(btn);
 
        getContentPane().add(body, BorderLayout.CENTER);
 
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
 
    }
 
}

Perhatikan baris

1
2
        ImageIcon icon = new ImageIcon(JFrameIcon.class.getResource("/jframeicon/sample_icon.png"));
        setIconImage(icon.getImage());

Method setIconImage() itulah yang digunakan untuk mengganti icon pada JFrame, sedangkan baris ImageIcon itu adalah mengambil data file sample_icon.png untuk kemudian dijadikan instance dari class ImageIcon.

Demikian, semoga bisa berguna untuk kita semua.