Komponen utama Swing yang digunakan untuk membangun antarmuka grafis pengguna (GUI) desktop dalam bahasa pemrograman Java meliputi frame, panel, label, button, check box, radio button, combo box, text field, dan slider. Komponen-komponen tersebut memiliki berbagai metode yang memungkinkan pengembang untuk menangani interaksi pengguna seperti menampilkan teks, gambar, dan memilih pilihan.
1. Modul PBO – Teknokrat
80
KOMPONEN SWING
Tujuan
Praktikan dapat memahami dan menjelaskan komponen-komponen Swing pada Java
GUI dalam pemrograman Java.
SWING PACKAGE
Untuk membangun aplikasi GUI desktop Swing toolkit menyediakan banyak sekali komponen yang
dapat digunakan. Selain itu Swing toolkit juga menyediakan kelas-kelas untuk menangani interaksi
(event) antara aplikasi dan pengguna menggunakan standar input seperti keyboard atau mouse.
Secara umum dari sekian banyak komponen yang disediakan hanya beberapa bagian saja yang lazim
digunakan. Pada bab kali ini akan dibahas beberapa komponen Swing yang sering digunakan.
FRAME
Frame merupakan top-level-container dari komponen swing. Terdapat 2 cara untuk
mengimplementasikan JFrame pada pemrograman swing java. Cara pertama dengan membuat objek
dari class JFrame pada kelas yang mengimplementasikan GUI. Setelah objek JFrame dibentuk,
komponen lain dapat ditambahkan. Cara kedua adalah dengan membuat sebuah class yang
mengextends Jframe tersebut.
Program 9-1
/* FrameDemo.java
* Cara Pertama
*/
import javax.swing.*;
public class FrameDemo {
private static void createAndShowGUI() {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("FrameDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Display the window.
frame.setSize(500, 200);
frame.setLocation(200, 150);
frame.setVisible(true);
}
public static void main(String[] args) {
createAndShowGUI();
}
}
BAB
9
2. Modul PBO – Teknokrat
81
Program 9-2
/* KelasFrame.java
* Cara Kedua
*/
import javax.swing.*;
public class KelasFrame extends JFrame {
public KelasFrame(String title) {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500, 200);
setLocation(200, 150);
setTitle(title);
setVisible(true);
}
public static void main(String args[]) {
JFrame.setDefaultLookAndFeelDecorated(true);
new KelasFrame("KelasFrame");
}
}
Kedua kode program di atas akan menghasilkan output yang sama seperti gambar berikut:
Hasil Output
PANEL
JPanel merupakan container yang termasuk ke dalam content pane. Content pane merupakan
tempat peletakan komponen swing seperti button, textfield dan komponen “swing control” lainnya.
Komponen tersebut dapat diletakkan langsung ke dalam JFrame, tapi JFrame bertindak sebagai top-
level-container, dan bukan content pane, sehingga lebih baik meletakkan komponen “swing control”
pada JPanel dan bukan pada JFrame. JPanel dapat dideklarasikan sebagai berikut:
JPanel p = new JPanel(new BorderLayout());
atau
JPanel p = new JPanel();
3. Modul PBO – Teknokrat
82
Perbedaan pembuatan objek cara pertama dengan kedua terletak pada inisialisasi layout yang
digunakan (Lihat modul 8). Layout pada pendeklarasian pertama menggunakan Border layout,
sedangkan pada cara kedua layout tidak ditentukan. Jika tidak ditentukan, maka panel akan memiliki
layout bertipe Flow (default JFrame adalah Flow Layout).
LABEL
Label merupakan komponen untuk menghasilkan “unselectable” gambar dan teks. Pada label dapat
diletakkan gambar (objek dari kelas ImageIcon) dan Teks (objek String). Parameter pada konstruktor
dapat berisi text dan image saja atau dapat berisi keduanya ditambah posisi tampilan label tersebut.
Contoh pembuatan objek label:
JLabel label1 = new JLabel("Text-only Label");
Beberapa method yang digunakan beserta fungsinya yaitu:
Method Fungsi
setText(“X”) Untuk mengeset tulisan teks pada label
getText() Mengambil tulisan teks pada label
setToolTipText() Memberikan tooltip pada label
Sehingga jika kita tambahkan label pada Program 9-2 seperti berikut:
Program 9-3
/* KelasFrame.java
* Cara Kedua
*/
import java.awt.*;
import javax.swing.*;
public class KelasFrame extends JFrame {
public KelasFrame(String title) {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel p = new JPanel(new BorderLayout());
JLabel label1 = new JLabel("Text-only Label");
p.add(label1, BorderLayout.PAGE_START);
add(p);
setSize(500, 200);
setLocation(200, 150);
setTitle(title);
setVisible(true);
}
public static void main(String args[]) {
JFrame.setDefaultLookAndFeelDecorated(true);
new KelasFrame("KelasFrame");
}
}
4. Modul PBO – Teknokrat
83
Hasil Output
BUTTON-MNEMONIC
Merupakan komponen untuk membuat tombol. Kelas yang digunakan adalah JButton. Pada
komponen ini, selain keterangan teks, dapat juga ditambahkan image/icon. Contoh pembuatan
objek:
JButton b2 = new JButton("Tombol 2");
Pada button dan menu dapat ditambahkan mnemonic. Mnemonic merupakan penggunaan tombol
dengan menggunakan keyboard. Biasanya terdapat 1 huruf yang digunakan sebagai penanda yang
berfungsi sama dengan menekan tombol. Mnemonic bekerja dengan menekan “Alt+huruf penanda”.
Penanda yang biasa digunakan adalah huruf pertama dari keterangan tombol. Contoh cara mengeset
mnemonic (contohnya menunjukkan bahwa tombol akan aktif jika ALT+D ditekan):
b2.setMnemonic(KeyEvent.VK_D);
Untuk menggunakan Mnemonic kita terlebih dahulu harus meng-import event seperti berikut:
import java.awt.event.*;
Beberapa method yang digunakan untuk button beserta fungsinya yaitu:
Method Fungsi
setText(“X”) Untuk mengeset tulisan teks pada button
setMnemonic(KeyEvent.VK_D) Mengeset mnemonic pada tombol
setToolTipText() Memberikan tooltip pada tombol
setEnabled(false) Mengeset tombol dapat diklik atau tidak. Parameter “false”
menyatakan tombol disable, dan sebaliknya
setActionCommand Mengeset nama action performed dari tombol tersebut
5. Modul PBO – Teknokrat
84
Sehingga jika kita tambahkan label pada Program 9-3 seperti berikut:
Program 9-
4
/* KelasFrame.java
* Cara Kedua
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class KelasFrame extends JFrame {
public KelasFrame(String title) {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel p = new JPanel(new BorderLayout());
JLabel label1 = new JLabel("Text-only Label");
p.add(label1, BorderLayout.PAGE_START);
JButton b2 = new JButton("Tombol 2");
b2.setMnemonic(KeyEvent.VK_D);
p.add(b2, BorderLayout.LINE_START);
add(p);
setSize(500, 200);
setLocation(200, 150);
setTitle(title);
setVisible(true);
}
public static void main(String args[]) {
JFrame.setDefaultLookAndFeelDecorated(true);
new KelasFrame("KelasFrame");
}
}
Hasil Output
6. Modul PBO – Teknokrat
85
CHECK BOX DAN RADIO BUTTON
Kedua komponen ini digunakan untuk merepresentasikan data yang berupa pilihan. Kelas yang
digunakan adalah JCheckBox dan JradioButton, keduanya hanya mempunyai dua buah kemungkinan
nilai, benar atau salah. JCheckBox digunakan jika pilihanya berupa multiple selection, sedangkan
JRadioButton digunakan jika pilihanya berupa single selection.
ButtonGroup diiperlukan untuk mengumpulkan JRadioButton yang mempunyai grup pilihan yang
sama. Jika JradioButton tidak diletakan dalam satu group, maka pilihan item bisa dipilihi bersamaan
(lebih dari satu).
Beberapa method yang digunakan untuk check box dan radio button beserta fungsinya yaitu:
Method Fungsi
setText(“X”) Untuk mengeset tulisan teks pada check box dan radio button
getText() Untuk mengambil tulisan teks
setMnemonic(KeyEvent.VK_M) Untuk mengeset mnemonic
setToolTipText() Untuk memberikan tool tip pada komponen
setEnabled(false) Untuk mengeset agar dapat dklik atau tidak
setSelected(true) Untuk mengeset check box dan radio button apakah memiliki
keadaan dipilih saat pertama kali dijalankan atau tidak
setActionCommand Untuk mengeset nama action performed dari komponen tersebut
isSelected() Untuk mengecek apakan check box atau radio button sedang
dipilih atau tidak
Berikut contoh penggunakan JCheckBox dan JRadioButton:
Program 9-
5
7. Modul PBO – Teknokrat
86
// CheckBoxRadioButtonDemo.java
import java.awt.event.*;
import javax.swing.*;
public class CheckBoxRadioButtonDemo extends JPanel{
JCheckBox miButton, kaButton, tkButton;
JRadioButton birdButton, catButton, rabbitButton;
public CheckBoxRadioButtonDemo() {
//Membuat Radio Button
birdButton = new JRadioButton("Burung");
birdButton.setMnemonic(KeyEvent.VK_B);
birdButton.setActionCommand("Burung");
birdButton.setSelected(true);
catButton = new JRadioButton("Kucing");
catButton.setMnemonic(KeyEvent.VK_C);
catButton.setActionCommand("Kucing");
rabbitButton = new JRadioButton("Kelinci");
rabbitButton.setMnemonic(KeyEvent.VK_L);
rabbitButton.setActionCommand("Kelinci");
//Membuat Grup Button
ButtonGroup group = new ButtonGroup();
//Memasukkan radio button ke grup
group.add(birdButton);
group.add(catButton);
group.add(rabbitButton);
//menambahkan radio button pada panel
this.add(birdButton);
this.add(catButton);
this.add(rabbitButton);
//Create the check boxes.
miButton = new JCheckBox("MI");
miButton.setMnemonic(KeyEvent.VK_M);
miButton.setSelected(true);
kaButton = new JCheckBox("KA");
kaButton.setMnemonic(KeyEvent.VK_K);
kaButton.setSelected(true);
tkButton = new JCheckBox("TK");
tkButton.setMnemonic(KeyEvent.VK_T);
tkButton.setSelected(true);
//Tambahkan cek box di panel
this.add(miButton);
this.add(kaButton);
this.add(tkButton);
}
8. Modul PBO – Teknokrat
87
private static void createAndShowGUI() {
//membuat frame
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("ChcekBoxRadioButtonDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//membuat content pane
CheckBoxRadioButtonDemo newContentPane = new
CheckBoxRadioButtonDemo();
newContentPane.setOpaque(true); //content panes must be opaque
frame.setContentPane(newContentPane);
//Memunculkan window
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
Hasil Output
COMBOBOX
Combo box merupakan pemilihan menu melalui menu drop down. Sifatnya harus memilih salah
satu. Terdapat 2 tipe combo box, editable combo box dan uneditable combo box. Perbedaannya,
untuk editable combo box, combo box dapat dituliskan layaknya text field.
Konstruktor memiliki parameter masukan berupa model dari comboBox (bisa dideklarasikan
terpisah). Selain itu, Model dapat berupa Array of Object (Object[]) atau Vector. Method yang paling
sering digunakan dan fungsinya adalah sebagai berikut:
Method Fungsi
setEditable(true) Untuk mengeset tipe combo box, apakah editable combo box
atau uneditable combo box
setSelectedIndex(4) Untuk mengambil indeks item pada kolom yang dipilih. Item
dihitung dari nilai 0
9. Modul PBO – Teknokrat
88
getSelectedItem() Mengembalikan obyek terpilih dari combo box. Jika ingin
dimasukan ke dalam String harus dilakukan casting terlebih
dahulu
getSelectedIndex() Mengembalikan indeks item terpilih
getItemAt(3) Mengembalikan item pada indeks yang ditentukan
insertItemAt(objek, indek) Memasukan item pilihan berupa obyek bertipe Object pada
indeks ke indek
getItemCount() Mengembalikan jumlah item pada combo box
Berikut contoh penggunakan JCheckBox dan JRadioButton:
Program 9-
6
// SimpleComboBoxDemo.java
import javax.swing.*;
public class SimpleComboBoxDemo extends JPanel{
public SimpleComboBoxDemo() {
String[] daftarPilihan = {"-Pilih-", "Komputer", "Ekonomi",
"Bahasa", "Eksakta"};
JComboBox pilMK = new JComboBox(daftarPilihan);
pilMK.setSelectedIndex(0);
add(pilMK);
}
private static void createAndShowGUI() {
//membuat frame
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("ComboBoxDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//membuat content pane
JComponent newContentPane = new SimpleComboBoxDemo();
newContentPane.setOpaque(true); //content panes must be opaque
frame.setContentPane(newContentPane);
//Memunculkan window
frame.pack();
frame.setVisible(true);
}
10. Modul PBO – Teknokrat
89
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
Hasil Output
TEXTFIELD
Textfield adalah komponen dasar yang selalu ada dalam setiap aplikasi berbasis desktop. Kelas yang
digunaan adalah JTextField. Textfield mempunyai fungsi yang sangat sederhana yaitu untuk
menyimpan data berbentuk teks (string) yang relatif pendek.
Beberapa method yang digunakan untuk check box dan radio button beserta fungsinya yaitu:
Method Fungsi
setText(“X”) Untuk mengeset tulisan teks pada komponen
getText() Untuk mengambil tulisan teks dari komponen
Berikut ini adalah contoh aplikasi sederhana menggunakan textfield:
Program 9-
7
// SimpleTextFieldDemo.java
import java.awt.*;
import javax.swing.*;
public class SimpleTextFieldDemo extends JPanel{
public SimpleTextFieldDemo() {
JLabel lb1, lb2;
JTextField tf1, tf2;
11. Modul PBO – Teknokrat
90
lb1 = new JLabel("NPM");
tf1 = new JTextField(10);
lb2 = new JLabel("Nama");
tf2 = new JTextField(25);
setLayout(new FlowLayout());
//setAlignment(FlowLayout.CENTER);
add(lb1);
add(tf1);
add(lb2);
add(tf2);
}
private static void createAndShowGUI() {
//membuat frame
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("TextFieldDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//membuat content pane
JComponent newContentPane = new SimpleTextFieldDemo();
newContentPane.setOpaque(true); //content panes must be opaque
frame.setContentPane(newContentPane);
//Memunculkan window
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
Hasil Output
SLIDER
JSlider adalah komponen yang memungkinkan pengguna untuk memilih nilai dengan menggeser
sebuah tombol dalam interval tertentu. Contohnya pada tampilkan kontrol volume suara.
Program 9-
5
12. Modul PBO – Teknokrat
91
// Slider.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class Slider extends JFrame {
private JSlider slider;
private JLabel label;
ImageIcon mute = new
ImageIcon(ClassLoader.getSystemResource("mute.png"));
ImageIcon min = new
ImageIcon(ClassLoader.getSystemResource("min.png"));
ImageIcon med = new
ImageIcon(ClassLoader.getSystemResource("med.png"));
ImageIcon max = new
ImageIcon(ClassLoader.getSystemResource("max.png"));
public Slider() {
setTitle("JSlider");
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
panel.setBorder(BorderFactory.createEmptyBorder(40, 40, 40, 40));
setLayout(new BorderLayout());
panel.add(Box.createHorizontalGlue());
slider = new JSlider(0, 150, 0);
slider.setPreferredSize(new Dimension(150, 30));
slider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent event) {
int value = slider.getValue();
if (value == 0) {
label.setIcon(mute);
} else if (value > 0 && value <= 30) {
label.setIcon(min);
} else if (value > 30 && value < 80) {
label.setIcon(med);
} else {
label.setIcon(max);
}
}
});
13. Modul PBO – Teknokrat
92
panel.add(slider);
panel.add(Box.createRigidArea(new Dimension(5, 0)));
label = new JLabel(mute, JLabel.CENTER);
panel.add(label);
panel.add(Box.createHorizontalGlue());
add(panel, BorderLayout.CENTER);
pack();
setLocationRelativeTo(null);
}
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
Slider button = new Slider();
button.setVisible(true);
}
}
Hasil Output
14. Modul PBO – Teknokrat
93
Lembar Kerja Praktikum: Modul 9
NPM: Asisten:
Nama: Nilai:
Kelas: Tanggal:
Soal
1. [Score: 100] Buatlah sebuah aplikasi yang bisa mengkonversi suatu temperatur dengan
menggunakan komponen Swing seperti berikut.