BAB IX. USER INTERFACE 9.1.Dasar GUI Program GUI (Graphical User Interface) merupakan metode pendesainan program ke dunia nyata (real world) atau visual bukan dalam bentuk console. Paket yang dapat digunakan untuk mengembangkan program-program GUI adalah AWT danswing. 9.1.1. Paket AWT (Abstract Window Toolkit ) dan Swing AWT = sekumpulan library yang tidak tergantung pada platform (platform independent) dan digunakan untuk menyederhanakan implementasi user interface. Swing = bentuk implementasi yang menambahkan komponen-komponen dalam sistem GUI tetapi masih didasarkan pada arsitekstur AWT. 9.1.2. Mekanisme Event Handling Pada saat user melakukan input elemen melalui keyboard atau melakukan pengisian karakter, inilah yang disebut dengan event. Sedangkan event handling adalah merupakan teknik /cara untuk melakukan pekerjaan tertentu pada saat suatu event terjadi. Mekanisme event handling ini berdasarkan pada delegation event model atau model pendelegasian event. Model ini mendefinisikan cara standart dan konsisten untuk membangkitkan dan memproses suatu event. Konsep dari mekanisme tersebut adalah sebagai berikut: event source (sumber / pembangkit event) akan membangkitkan / menghasilkan suatu event tertentu,dan mengirimkannya ke satu / lebih event listener (pendengar event). Contoh event source : Obyek-obyek/komponen-komponen yang terdapat di dalam user interface (button, listbox, combobox). Contoh event listener : MouseMotionListener, ItemListener, ActionListener. Keuntungan mekanisme tersebut adalah terdapat pemisahan yang jelas antara kode logis yang digunakan untuk memproes event dengan kode logis untuk keperluan user interface. 1
Contoh: objek dari kelas ActionEvent adalah event yang dibangkitkan pda saat sebuah button di-klik, sebuah list di-doubleklik dan menu dipilih oleh user. Contoh program 9-1 PerdanaGUI.java Contoh program 9-2 MyFirstGUI2.java 2
Contoh program 9-3 MySwingApplication.java import java.awt.*; import java.awt.event.*; import javax.swing.*; class MySwingApplication extends JFrame implements ActionListener public JLabel label; public JButton button; private int numclicks = 0; //tambahkan public MySwingApplication setvisible(true); public void actionperformed(actionevent event) if (event.getsource() == button) label.settext("jumlah klik yang dilakukan: " + (++numclicks)); public static void main(string[] args) MySwingApplication app = new MySwingApplication("Contoh Event-Handling"); 3
Hasilnya Analisalah program di atas. 4
Contoh program 9-4 DemoKlik.java import java.awt.*; import java.awt.event.*; import javax.swing.*; public class DemoKlik extends JFrame implements ActionListener JButton tombolklik; JButton tombolreset; JButton tomboltutup; int counter = 0; //Tambahkan public DemoKlik setvisible(true); public static void main(string[] args) new DemoKlik(); // mengimplementasikan method actionperformed() public void actionperformed(actionevent e) if(e.getsource() == tombolklik) System.out.println("Klik ke: " + ++counter); else if(e.getsource() == tombolreset) counter = 0; System.out.println("--- Reset Counter ---"); else if(e.getsource() == tomboltutup) System.exit(0); Ketikkan listing program di bawah untuk melengkapi listing program di atas. 5
Setelah dilengkapi hasilnya akan tampak seperti berikut: 6
Contoh program 9-5 Tampilan1.java import java.awt.*; import javax.swing.*; import java.awt.event.*; public class Tampilan1 public Tampilan1() JFrame frame = new JFrame(); JLabel lblpesan =new JLabel("Pesan :"); final JTextField txtpesan = new JTextField(30); JButton btntampil = new JButton("Tampilkan"); JButton btnkosong = new JButton("Kosongkan"); txtpesan.settext("halo..."); btnkosong.addactionlistener(new ActionListener() public void actionperformed(actionevent event) txtpesan.settext(""); ); btntampil.addactionlistener(new ActionListener() public void actionperformed(actionevent event) JOptionPane.showMessageDialog(null,txtPesan.getText()); ); Container contentpane = frame.getcontentpane(); contentpane.setlayout(new FlowLayout()); contentpane.add(lblpesan); contentpane.add(txtpesan); contentpane.add(btntampil); contentpane.add(btnkosong); frame.setdefaultcloseoperation(jframe.exit_on_close); frame.pack(); frame.show(); public static void main(string[] args) new Tampilan1(); 7
Contoh program 9-6 Tampilan2.java import java.awt.*; import javax.swing.*; import java.awt.event.*; public class Tampilan2 public Tampilan2() JFrame frame = new JFrame(); final JTextField txtinfo1 = new JTextField(20); final JTextField txtinfo2 = new JTextField(20); JButton btnsalin = new JButton("Salin"); JButton btnpindah = new JButton("Pindah"); txtinfo1.settext("nn"); txtinfo2.settext(" "); Container contentpane = frame.getcontentpane(); contentpane.setlayout(new FlowLayout()); contentpane.add(txtinfo1); contentpane.add(btnsalin); contentpane.add(btnpindah); contentpane.add(txtinfo2); frame.setdefaultcloseoperation(jframe.exit_on_close); frame.pack(); frame.show(); public static void main(string[] args) new Tampilan2(); 8
Output program Tampilan1.java apabila tombol Tampilkan di-klik maka akan tampil seperti di bawah. Output program Tampilan2.java TeksField1 TeksField2 Latihan 1. Modifikasilah program Tampilan2.java sehingga dapat mengaplikasikan tombol Salin dan Pindah. Dengan ketentuan untuk tombol Salin adalah menyalin data teks yang berasal dari TeksField1 disalin ke TeksField2 (TeksField1 dan TeksField2 berisi data yang sama), sedangkan tombol Pindah adalah untuk memindahkan data TeksField1 ke data TeksField2 sehingga data TeksField1 hilang. 2. Simpan File di atas dengan nama Tampilan3.java 3. Buatlah tampilan yang terdiri dari 2 teksfield dan 3 button, seperti tabel di bawah ini 9
Event source TeksField1 TeksField2 Button1 Button2 Button3 Keterangan Mengisikan NIM Mengisikan Nama Tampilkan NIM Tampilkan Nama Kosongkan 1. Tampilan awal Button1 Button2 Button3 2. Button1 (Tombol1) di-klik TeksField1 TeksField2 3.Button2 (Tombol2) di-klik 4.Button3 (Tombol3) di-klik 10