PERTEMUAN VI AWT DAN SWING
TUJUAN PRAKTIKUM
1. Praktikan mengenal pembuatan GUI pada Java. 2. Praktikan memahami action pada objek dalam Java.
Selain untuk pemrograman yang berbasis konsol, java juga mendukung pemrograman berbasiskan GUI (Graphical User Interface), Salah satunya menggunakan AWT (Abstract Window Toolkit), AWT merupakan cara untuk membuat pemrograman windows pada java, komponen komponen AWT terdapat dalam paket java.awt. Selain
itu
dapat
juga
menggunakan swing untuk pemrograman berbasis window, Swing merupakan cara lain selain AWT untuk mengimplementasikan pemrograman window. Swing dikemas dalam paket bernama javax.swing. 6.1 Pemrograman dengan AWT Seperti yang disebutkan diatas pemrograman AWT menggunakan komponen yang terdapat dalam paket java.awt. Berikut ini adalah contoh program sederhana menggunakan AWT: import java.awt.*; public class AwtPertama { public static void main(String[] bowo) {Frame win=new Frame(" Coba AWT"); win.setSize(300,200); win.show();} }
Lab. Teknik Informatika - FTI Universitas Gunadarma
73
Hasilnya
Gambar 1.1 Contoh AWT
Pada program diatas dilakukan import terhadap java.awt.*, karena pada program diatas menggunakan komponen AWT. Untuk membentuk sebuah window, harus dibuat sebuah objek dari class Frame, program diatas objek win terbentuk dari class Frame. Sedangankan metode setSize, digunakan untuk mengatur ukuran window, dan metode show digunakan untuk menampilkan window. Program diatas dapat di tulis dengan cara berbeda, yaitu dengan menurunkan sifat dari Frame kepada class AwtPertama, seperti dibawah ini import java.awt.*; public class AwtPertama extends Frame { AwtPertama() { super("Coba AWT"); setSize(300,200); show(); } public static void main(String[] bowo) { AwtPertama obj=new AwtPertama(); } }
Lab. Teknik Informatika - FTI Universitas Gunadarma
74
6.1.1 Komponen-komponen AWT AWT memilik beberapa komponen seperti Button, Label, TextField, CheckBox, List dan masih banyak lagi, namun kali ini akan dibahas hanya Button dan Label saja. 6.1.1.1 Button Button merupakan kelas yang digunakan untuk memasang sebuah tombol pada window kita, bentuk umum penggunaan label adalah sebagai berikut: Button
=new Button(); dan berikut contoh pembuatan tombol : import java.awt.*; public class TesButton extends Frame { public static void main(String[] args) { TesButton apl = new TesButton(); } public TesButton() { super("Tes Button"); setSize(300, 100); Panel panelTombol = new Panel(); Button("Perbesar")); panelTombol.add(new panelTombol.add(new Button("Selesai")); add("South", panelTombol); show(); } }
Yang tercetak merah adalah pendeklarasia objekdari class Button,lalu Button tersebut diletakkan pada sebuah panel dan ditempelkan pada window bagian bawah, berikut hasilnya
Gambar 1.2 Komponen Button 6.1.1.2 Label Label adalah class pada java yang digunakan untuk menampilkan sebuah text pada window, bentuk umum penggunaan Label adalah sebagai berikut :
Lab. Teknik Informatika - FTI Universitas Gunadarma
75
Label =new Label(); contoh penggunaan label : import java.awt.*; public class TesButton extends Frame { public static void main(String[] args) { TesButton apl = new TesButton(); } public TesButton() { super("COBA LABEL"); setSize(300, 100); Panel panelTombol = new Panel(); panelTombol.add(new Label("INI LABEL")); add("South", panelTombol); show(); } }
Yang tercetak merah adalah pendeklarasian objek dari class Label,lalu Label tersebut diletakkan pada sebuah panel dan ditempelkan pada window bagian bawah, berikut hasilnya
Gambar 1.3 Contoh Label
6.2 Pemrograman Swing Swing merupakan salah satu cara untuk mengimplementasikan pemrograman window pada java, beda swing dengan awt adalah bentuk komponen-komponen dari kelas swing sama bentuknya pada semua platform / sistem operasi. Contoh Swing : import javax.swing.*; class Swing extends JFrame { Swing(){ super("INI SWING LHO..."); setSize(300,300); show();
Lab. Teknik Informatika - FTI Universitas Gunadarma
76
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { Swing sw=new Swing(); } }
HASILNYA :
Gambar 1.4 Contoh Swing
6.2.1 Komponen - Komponen Swing Dalam konteks antarmuka pengguna, komponen merupakan bagian fundamental di Java. Pada prinsipnya, segala sesuatu yang kita lihat di tampilan aplikasi Java adalah suatu komponen, seperti window, menu, dan button. Container adalah jenis komponen yang ”menampung” dan mengelola komponenkomponen lainnya. Agar suatu komponen dapat digunakan, biasanya harus diletakkan di sebuah container. Komponen-komponen Swing dapat diklasifikasikan ke dalam 3 bagian yaitu: 1. Top-level container berfungsi untuk menyediakan ruang bagi komponen-komponen lainnya. Container jenis ini terdiri atas JFrame, JWindow, Jdialog, dan Japplet. 2. Intermediate container komponen (non top-level) yang keberadaannya untuk menampung komponen lainnya, misal panel, tabbed, dan tool bar. 3. Komponen Atomic (tunggal) berfungsi untuk menampilkan dan/atau menerima informasi. Contohnya adalah text field, button, dan label. Lab. Teknik Informatika - FTI Universitas Gunadarma
77
Kali ini hanya membahas komponen atomic seperti JButton, JLabel dan JtextField, dengan penjabaran sebagai berikut : 6.2.1.1 JLabel JLabel merupakan komponen yang digunakan untuk menampilkan teks yang pendek atau gambar atau keduanya. Komponen Label memiliki konstruktor sebagai berikut : KONSTRUKTOR JLabel() Menciptakan objek JLabel tanpa gambar dan tanpa teks JLabel(Icon gbr) Menciptakan objek JLabel dengan gambar tetapi tanpa teks JLabel(String str) Menciptakan objek JLabel dengan teks tetapi tanpa gambar JLabel(String str, Icon gbr, int pengaturanHorizontal) Menciptakan objek JLabel dengan gambar dan teks serta diatur dengan pengaturan horizontal JLabel(String str, Icon gbr, int pengaturanVertikal) Menciptakan objek JLabel dengan gambar dan teks serta diatur dengan pengaturan vertikal
Contoh JLabel :
Gambar 1.5 Gambar contoh JLabel Lab. Teknik Informatika - FTI Universitas Gunadarma
78
6.2.1.2. JButton
Kelas JButton berguna untuk membuat objek tombol yang dapat dilengkapi dengan judul tombol dan gambar, selain itu JButton merupakan komponen yang dapat menghasilkan suatu event jika tombol diklik oleh user. Komponen JButton memiliki konstruktor sebagai berikut : KONSTRUKTOR JButton() Menciptakan objek JButton tanpa gambar dan tanpa teks JLabel(Icon gbr) Menciptakan objek JButton dengan gambar tetapi tanpa teks JLabel(String str) Menciptakan objek JButton dengan teks tetapi tanpa gambar JLabel(String str, Icon gbr) Menciptakan objek JLabel dengan gambar dan teks.
Contoh dari JButton :
Gambar 1.6 Gambar Contoh Jbutton
Lab. Teknik Informatika - FTI Universitas Gunadarma
79
6.2.1.3. JTextField
JTextField merupakan objek yang berguna untuk memasukkan atau mengedit data satu baris. Komponen JTextField memiliki konstruktor sebagai berikut : KONSTRUKTOR JTextField() Menciptakan objek JTextField baru tanpa nilai awal String JTextField(String str) Menciptakan objek JButton dengan gambar tetapi tanpa teks JTextField(String str,int Kolom) Menciptakan objek JButton dengan teks tetapi tanpa gambar JTextField( int Kolom) Menciptakan objek JLabel dengan gambar dan teks. JTextField(Document doc, String str, int Kolom) Menciptakan objek JButton dengan teks tetapi tanpa gambar
Contoh JTextField() :
Gambar 1.7 Gambar contoh JTextField
Lab. Teknik Informatika - FTI Universitas Gunadarma
80
6.2.2 Pengaturan tata letak komponen
Pengaturan tata letak pada java dapat dilakukan dengan setlayout yaitu FlowLayout, GridbagLayout, BorderLayout, BoxLayout, SpringLayout dan CardLayout, selain itu bisa juga dengan metode setBounds(x,y,p,l). Dimana x dan y adalah koordinat, dan p adalah panjang objek dan l adalah lebar objek. Tetapi sebelum melakukannya, pastikan
bahwa
layout
sudah
dibuat null, dengan cara memanggil metode getContentPane().setLayout(null). Setelah itu komponen di tempel pada window dengan cara getContentPane().add(). Berikut contohnya : getContentPane().setLayout(null); but.setBounds(50,250,150,24); lb.setBounds(50,50,100,24); jt.setBounds(50,100,200,100); getContentPane().add(but); getContentPane().add(lb); getContentPane().add(jt); but.addActionListener(this); show()
6.3 Penanganan Kejadian Penanganan kejadian atau ActionEvent pada java merupakan suatu cara untuk berinteraksi antara program dengan user. Penanganan kejadian yang akan dibahas berikut ini adalah paket dari java.awt.event.* . Tabel berikut memperlihatkan beberapa event dan event listener yang umumnya diperlukan dalam aplikasi. Event Klik button, menekan Enter di text field, atau memilih item menu
Event Listener ActionListener
Menutup window Menekan button mouse saat kursor berada diatas komponen
WindowListener
Memindahkan kursor Menampilkan komponen Komponen mendapat fokus Mengubah pemilihan tabel atau list
MouseMotionListener ComponentListener FocusListener ListSelectionListener
Lab. Teknik Informatika - FTI Universitas Gunadarma
MouseListener
81
Penanganan kejadian yang digunakan dalam penulisan ini adalah kelas yang terdapat pada paket java.awt.event. Sebelumnya pada penamaan class harus mengimplementasikan ActionListener.Pada paket ini dapat digunakan oleh komponen AWT maupun SWING, agar objek dapat menangani suatu kejadian, objek tersebut harus didaftarkan sebagai listener. Contohnya adalah sebagai berikut : JButton But = new JButton(“Kirim”); But.addActionListener(this);
Dan penulisan isi respon dari objek ditulis pada metode void actionPerformed(ActionEvent e){}. Contoh Penanganan Kejadian : import javax.swing.*; import java.awt.event.*; class Coba extends JFrame implements ActionListener { JButton But = new JButton(“Kirim”); but.addActionListener(this); show(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent e) { if(e.getSource()==but){String kata=""; kata=jt.getText(); JOptionPane.showMessageDialog(null,kata);} }
Program 1 Contoh program inputan dengan applet : //nama file:InputDialog1.java import javax.swing.JOptionPane; class InputDialog1 { public static void main(String[] args) { String nama; nama = JOptionPane.showInputDialog("Ketik Nama anda : "); System.out.println("Hello " + nama); System.exit(0); } }
Lab. Teknik Informatika - FTI Universitas Gunadarma
82
Catatan : Disini kita menggunakan template JoptionPane, yang memang digunakan untuk menampilkan message box.
Program 2 // Nama File : GUIfak.java //Nama Program : Program untuk menghitung nilai faktorial import javax.swing.*; import java.awt.event.*; import java.awt.*;
class GUIfak extends JFrame implements ActionListener { double hasil; Container con = new Container(); JButton hapus, ok; JTextField tex1, tex2;
double fakt(double angka) { if(angka == 0) { return 1; } else { return angka*fakt(angka-1); } } public GUIfak() { super("faktorial niy..!!"); setSize (300,250); ok = new JButton ("faktorial"); hapus = new JButton ("hapus"); ok.addActionListener (this); hapus.addActionListener (this); JPanel tombol = new JPanel (); hapus.setEnabled (false); tombol.setLayout (new GridLayout(1,2,10,10)); Lab. Teknik Informatika - FTI Universitas Gunadarma
83
tombol.add (hapus); tombol.add(ok);
tex1 = new JTextField(""); tex2 = new JTextField(""); tex2.setEditable (false); JPanel tex = new JPanel(); tex.setLayout(new GridLayout (2,1,10,10)); tex.add(tex1); tex.add(tex2); con = getContentPane(); con.setLayout(null); tex.setBounds(100,80,100,50); tombol.setBounds(50,150,200,30); con.add(tombol); con.add(tex); show(); }
public void actionPerformed (ActionEvent e) { try { if (e.getSource()==ok) { hapus.setEnabled(true); String a; double angka = Double.parseDouble(tex1.getText()); hasil = fakt(angka); } tex2.setText(Double.toString(hasil)); if (e.getSource() == hapus) { tex1.setText(""); tex2.setText(""); hapus.setEnabled(false); } }
Lab. Teknik Informatika - FTI Universitas Gunadarma
84
catch(Exception ex) { hapus.setEnabled(false); JOptionPane.showMessageDialog(this,
"Masukkan
nilai
yang
benar..!!"); } }
public static void main(String[] Zzzz) { GUIfak q = new GUIfak(); q.setResizable(false); q.setDefaultCloseOperation(EXIT_ON_CLOSE); } }
Penjelasan Program 2 : Pada listing program diatas berisi konstruktor untuk kelas GUIfak(). Kelas GUI memperluas kelas Frame(extends merupakan kata kunci untuk pewarisan. Kelas Frame adalah komponen GUI yang mengimplementasikan jendela dengan bingkai. Jendela tidak hanya berupa empat titik sudut dengan bingkai. Jendela juga merupakan container yang dapat memuat komponen GUI lainnya. Oleh karena kita perlu membuat komponen grafis lain dan menambahkannya ke frame dengan metode add(). Mendeklarasikan variabel hasil dengan tipe double, hapu, ok menggunakan JButton dan tex1, tex2 menggunakan JTextField. Terdapat fungsi fakt yang berisi proses penghitungan factorial. Kemudian mendesain tampilan yaitu membuat judul dan memberikan ukuran untuk bingkai serta membuat tampilan teks, tombol. Kita juga menambahkan sesuatu yang disebut panel yang digunakan untuk mengelompokkan komponen grafis bersamasama. Listing diatas menggunakan dua panel, satu untuk menyimpan dan meletakkan tombol-tombol dan satu lagi untuk memuat informasi record. Panel tombol dan panel tex menggunakan layout khusus yang disebut layout grid (baris, kolom, range horizontal, range vertical). Dengan layout grid, anda dapat membuat matriks dengan baris dan kolom yang membentuk sel berukuran sama, dan disinilah Lab. Teknik Informatika - FTI Universitas Gunadarma
85
komponen-komponen grafis di letakkan. Kita meletakkan field teks di dekat sel pada grid dan tombol di bawah dari field teks. Field teks adalah komponen grafis yang mengimplementasikan string teks yang dapat di edit. Container adalah komponen yang menyimpan komponen-komponen lain lalu akan ditampilkan dengan memanggil metode show() untuk menampilkan jendela
beserta semua
komponennya. Pada listing diatas, diprogram dengan model pemrograman event driven digunakan untuk menerima pemilihan menu dan pemilihan tombol. Pada java, GUI anda dapat menangkap kejadian dari system dengan menumpangi metode action performed() parameternya action event. Kata kunci try digunakan untuk menentukan suatu blok program yang harus di jaga terhadap semua eksepsi. Segera setelah blok try,masukkan bagian catch yang menentukan tipe eksepsi yang ingin ditangkap. Pada blok try berisi statement kondisi dimana jika ditekan tombol ok akan dilakukan pemrosesan nilai yang dimasukkan dari tex1 tipe string diubah menjadi tipe double untuk menghitung factorial dan ditampilkan di tex2 lalu jika ditekan tombol hapus maka akan menghapus kedua teks. Bagian catch menangkap kesalahan dan akan mencetak pesan untuk melakukan inputan kembali. Lalu program utama dimana membuat objek q dan memanggil program. OUTPUT :
STEP BY STEP 1. Sebutkan pemrograman yang digunakan untuk pembuatan GUI pada Java! 2. Sebutkan komponen AWT dan SWING!
MATERI PRAKTIKUM 1. Memberikan penjelasan tentang GUI di Java. 2. Memberikan penjelasan serta memberikan contoh implementasi komponen AWT dan SWING. Lab. Teknik Informatika - FTI Universitas Gunadarma 86
LAPORAN AKHIR Buatlah kesimpulan mengenai pembuatan GUI pada bahasa pemrograman JAVA yang telah dipraktekkan beserta dengan program-program yang telah dibuat berikut tampilan hasilnya.
Lab. Teknik Informatika - FTI Universitas Gunadarma
87