PERTEMUAN 6 AWT & SWING Obyektif Praktikum : y
Memahami persamaan dan perbedaan antara AWT dan Swing.
y
Mendesain aplikasi GUI menggunakan AWT.
y
Memahami action pada objek dalam Java.
y
Mendesain aplikasi GUI menggunakan Swing.
y
Perbedaan antara komponen dan kontainer.
y
Menjelaskan tentang flow layout, border layout, dan grid layout dalam komponen GUI.
Pemrograman Berbasis Objek - 2011
1
DASAR GUI y
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 dan Swing.
y
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.
Pemrograman Berbasis Objek - 2011
2
Class pada AWT y
Window Classes Fundamental Berikut ini adalah daftar dari beberapa class penting pada kontainer yang telah disediakan oleh AWT.
Pemrograman Berbasis Objek - 2011
3
PEMROGRAMAN DENGAN AWT y
Selain untuk pemrograman yang berbasis konsol, java juga mendukung pemrograman berbasiskan GUI (Graphical User Interface), Salah satunya menggunakan AWT (Abstract Window Toolkit).
y
Komponen-komponen AWT ¾
Button Button merupakan kelas yang digunakan untuk memasang sebuah tombol pada window. Bentuk Umum : Button
=new Button();
¾
Label Label adalah class pada java yang digunakan untuk menampilkan sebuah text
pada window.
Bentuk umum : Label =new Label(); ¾
TextField
¾
CheckBox
¾
List, dll
Pemrograman Berbasis Objek - 2011
4
KOMPONEN GUI PADA AWT y
Grafik Beberapa method grafik ditemukan dalam class Graphic. Dibawah ini adalah daftar dari beberapa method.
Pemrograman Berbasis Objek - 2011
5
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(); } }
Output :
Pemrograman Berbasis Objek - 2011
6
PEMROGRAMAN SWING y
Komponen - Komponen Swing ¾
Top-level container berfungsi untuk menyediakan ruang bagi komponenlainnya. Container jenis ini terdiri atas JFrame, JWindow, Jdialog, dan Japplet.
komponen
¾
Intermediate container komponen (non top-level) yang keberadaannya untuk menampung komponen lainnya, misal panel, tabbed, dan tool bar.
¾
Komponen Atomic (tunggal) berfungsi untuk menampilkan dan/atau menerima informasi. Contohnya adalah text field, button, dan label.
y
Container adalah jenis komponen yang ”menampung” dan mengelola komponenkomponen lainnya. Agar suatu komponen dapat digunakan, biasanya harus diletakkan di sebuah container.
y
Pengaturan tata letak komponen : ¾
FlowLayout
¾
GridbagLayout
¾
BorderLayou
¾
BoxLayout
¾
SpringLayout
¾
CardLayout
Pemrograman Berbasis Objek - 2011
7
CONTOH PROGRAM SEDERHANA MENGGUNAKAN SWING import javax.swing.*; class Swing extends JFrame { Swing(){ super("INI SWING LHO..."); setSize(300,300); show(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) {
Output : Swing sw=new Swing();
} }
Pemrograman Berbasis Objek - 2011
8
LAYOUT MANAGER y
FlowLayout Manager FlowLayout Manager adalah default manager untuk class JPanel dan subclassnya. Berikut adalah bagaimana FlowLayout Manager bekerja, dimana memiliki tiga constructor seperti daftar di bawah ini:
y
FlowLayout Constructors 1.
FlowLayout()
Membuat object baru FlowLayout dengan posisi di tengah dan lima unit horizontal vertikal gap dimasukkan pada komponen sebagai default. 2.
FlowLayout(int align)
Membuat object baru FlowLayout dengan posisi spesifik dan lima unit horizontal vertikal gap dimasukkan pada komponen sebagai default. 3.
dan
dan
FlowLayout(int align, int hgap, int vgap)
Membuat object baru FlowLayout dengan argumen pertama sebagai posisi pada komponen dan hgap untuk horizontal dan vgap untuk vertikal pada komponen Gap dapat dikatakan sebagai jarak antara komponen dan biasanya diukur dengan satuan pixel. Posisi argumen mengikuti penulisan sebagai berikut : 1.
FlowLayout.LEFT
2.
FlowLayout.CENTER
3.
FlowLayout.RIGHT
Pemrograman Berbasis Objek - 2011
9
Contoh Program FlowLayout Manager import java.awt.FlowLayout; import javax.swing.*; class FlowLayoutDemo extends JFrame { public static void main(String args[]) { FlowLayoutDemo fld = new
FlowLayoutDemo();
fld.setLayout(new FlowLayout(FlowLayout.RIGHT, 10, 10)); fld.add(new JButton("ONE")); fld.add(new JButton("TWO")); fld.add(new JButton("THREE")); fld.setSize(100, 100); fld.setVisible(true); } }
Pemrograman Berbasis Objek - 2011
10
y
BorderLayout Manager BorderLayout membagi kontainer menjadi lima bagian diantaranya utara, selatan, timur, barat, dan tengah.
y
Constructor BorderLayout 1.
BorderLayout() Membuat object BorderLayout baru tanpa spasi yang diaplikasikan diantara komponen yang berbeda.
2.
BorderLayout(int hgap, int vgap) Membuat object BorderLayout baru dengan spasi unit hgap horizontal dan unit vgap vertikal yang diaplikasikan diantara komponen yang berbeda. Berikut ini adalah daftar dari kelima region. 1.
BorderLayout.NORTH
2.
BorderLayout.SOUTH
3.
BorderLayout.EAST
4.
BorderLayout.WEST
5.
BorderLayout.CENTER
Pemrograman Berbasis Objek - 2011
11
Contoh Program Borderlayout Manager import java.awt.BorderLayout; import javax.swing.*; class BorderLayoutDemo extends JFrame { public static void main(String args[]) { BorderLayoutDemo bld = new BorderLayoutDemo(); bld.setLayout(new BorderLayout(10, 10)); //may remove bld.add(new JButton("NORTH"), BorderLayout.NORTH); bld.add(new JButton("SOUTH"), BorderLayout.SOUTH); bld.add(new JButton("EAST"), BorderLayout.EAST); bld.add(new JButton("WEST"), BorderLayout.WEST); bld.add(new JButton("CENTER"), BorderLayout.CENTER); bld.setSize(200, 200); bld.setVisible(true); } }
Pemrograman Berbasis Objek - 2011
12
y
GridLayout Manager GridLayout manager membagi kontainer menjadi baris dan kolom. Semua region memiliki ukuran yang sama. Berikut ini adalah daftar dari constructor untuk class GridLayout.
y
Constructor GridLayout 1.
GridLayout() Membuat object GridLayout baru dengan satu baris dan satu kolom
2.
GridLayout(int rows, int cols)
Membuat object GridLayout baru dengan jumlah baris dan kolom sesuai keinginan 3.
sebagai default dengan
GridLayout(int rows, int cols, int hgap, int vgap)
Membuat object GridLayout baru dengan jumlah baris dan kolom yang spasi hgap horizontal dan vgap vertikal diaplikasikan ke dalam komponen.
ditentukan. Unit
Pemrograman Berbasis Objek - 2011
13
Contoh Program Gridlayout Manager import java.awt.*; class GridLayoutDemo extends Frame { public static void main(String args[]) { GridLayoutDemo gld = new GridLayoutDemo(); gld.setLayout(new GridLayout(2, 3, 4, 4)); gld.add(new Button("ONE")); gld.add(new Button("TWO")); gld.add(new Button("THREE")); gld.add(new Button("FOUR")); gld.add(new Button("FIVE")); gld.setSize(200, 200); gld.setVisible(true); } }
Pemrograman Berbasis Objek - 2011
14
JBUTTON, JLABEL DAN JTEXTFIELD y
JLabel JLabel merupakan komponen yang digunakan untuk menampilkan teks yang pendek atau gambar atau keduanya. Komponen Label memiliki konstruktor sebagai berikut :
Pemrograman Berbasis Objek - 2011
15
Contoh Program Menggunakan JLabel 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(); } }
Output :
Pemrograman Berbasis Objek - 2011
16
JBUTTON, JLABEL DAN JTEXTFIELD y
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 :
Pemrograman Berbasis Objek - 2011
17
Contoh Program Menggunakan JButton 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(); panelTombol.add(new Button("Perbesar")); panelTombol.add(new Button("Selesai")); add("South", panelTombol); show(); } }
Output :
Pemrograman Berbasis Objek - 2011
18
JBUTTON, JLABEL DAN JTEXTFIELD y
JTextField JTextField merupakan objek yang berguna untuk memasukkan atau mengedit data satu baris. Komponen JTextField memiliki konstruktor sebagai berikut :
Pemrograman Berbasis Objek - 2011
19
Contoh Program Menggunakan JLabel
Pemrograman Berbasis Objek - 2011
20
PENANGANAN KEJADIAN y
Penanganan kejadian atau ActionEvent pada java merupakan suatu cara untuk berinteraksi antara program dengan user.
y
Tabel berikut memperlihatkan beberapa event dan event listener yang umumnya diperlukan dalam aplikasi :
y
Pada paket ini dapat digunakan oleh komponen AWT maupun SWING, agar objek dapat menangani suatu kejadian, objek tersebut harus didaftarkan sebagai listener.
y
Contohnya adalah sebagai berikut : JButton But = new JButton(“Kirim”); But.addActionListener(this);
Pemrograman Berbasis Objek - 2011
21
CONTOH PROGRAM 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);} }
Pemrograman Berbasis Objek - 2011
22
Latihan Program Berikut ini adalah contoh program sederhana menginput dan menampilkan data dengan swing -awt. Ikutilah langkah-langkah berikut : Step 1 : Buka dan ketikan program pada teks editor notepad++ Anda. y
Simpan nama file pertama sama seperti nama classnya, yaitu Travel.java Misal disimpan pada direktori D Æ folder “praktikan” Æ Travel.java
y
Ketikkan program berikut pada teks editor Anda. //import fungsi untuk menggunakan perintah swing dan awt import
javax.swing.JFrame;
import
javax.swing.JButton;
import
javax.swing.JLabel;
import
javax.swing.JTextField;
import
javax.swing.JCheckBox;
import
javax.swing.JComboBox;
import
java.awt.Font;
import
java.awt.Color;
import
java.awt.event.ActionListener;
import
java.awt.event.ActionEvent ;
import
java.awt.event.ItemListener;
import
java.awt.event.ItemEvent ; Pemrograman Berbasis Objek - 2011
23
//dekarasi class turunan Jframe dan implementasi dari ActionListener class tampilan extends JFrame implements ActionListener {
*deklarasikan variabel ht,sub,jum bertipe integer, variabel disc dan total bertipe double. Semua variabel tersebut bersifat private ................... ................... //deklarasi variabel array item bertipe string berikut isinya private String[] item = {"","Jakarta","Cirebon","Tasikmalaya"}; //buat gui yang dibutuhkan seperti combobox, label, checkbox, textfield private JComboBox tuj = new JComboBox(item); private JLabel judul = new JLabel("Program Travel Bintang Kejora"); private JLabel nama = new JLabel("Nama"); private JLabel tujuan = new JLabel("Tujuan"); private JLabel jumlah = new JLabel("Jumlah Tiket"); private JLabel member = new JLabel("Member"); private JCheckBox cb = new JCheckBox ("Ya"); private JLabel harga = new JLabel("Harga Tiket"); private JLabel sub_t
= new JLabel("Sub Total");
private JLabel diskon = new JLabel("Diskon"); private JLabel t_harga = new JLabel("Total Harga"); private JTextField txtnama = new JTextField(); private JTextField txtujumlah = new JTextField(); private JTextField txtharga = new JTextField(); private JTextField txtsub = new JTextField();
Pemrograman Berbasis Objek - 2011
24
private JTextField txtdiskon = new JTextField(); private JTextField txttotal = new JTextField();
*buat 2 button bernama dan berlabel hitung dan ulangi bersifat private .............. .............. tampilan() //deklarasi method {//isi var super super("Program Travel Created By Andriyan"); //perintah untuk menutup frame/keluar program setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
*menentukan lokasi (100,100), ukuran (495,250) dan layout (null) ................. ................. ................. //memberi nama gui add(judul); add(nama); add(txtnama); add(tujuan); add(tuj); add(jumlah); add(txtujumlah); add(member); add(cb); add(harga); add(txtharga); add(sub_t); add(txtsub); add(diskon); add(txtdiskon); add(t_harga); add(txttotal); add(hitung); add(ulangi); //setting teks judul.setFont(new Font("Times New Roman",Font .BOLD,20)); judul.setBounds(10,10,300,20);
Pemrograman Berbasis Objek - 2011
25
nama.setBounds(10,50,100,20); txtnama.setBounds(120,50,100,20); tujuan.setBounds(10,75,100,20); tuj.setBounds(120,75,100,20); jumlah.setBounds(10,100,100,20); txtujumlah.setBounds(120,100,100,20); member.setBounds(10,125,100,20); cb.setBounds(115,125,100,20); harga.setBounds(260,50,100,20); txtharga.setBounds(370,50,100,20); sub_t.setBounds(260,75,100,20); txtsub.setBounds(370,75,100,20); diskon.setBounds(260,100,100,20); txtdiskon.setBounds(370,100,100,20); t_harga.setBounds(260,125,100,20); txttotal.setBounds(370,125,100,20); hitung.setBounds(130,175,100,20); ulangi.setBounds(250,175,100,20); //kirim action jika tombol diklik ke method ActionListener tuj.addActionListener(this); cb.addActionListener(this); hitung.addActionListener(this); ulangi.addActionListener(this); setVisible(true); //perintah agar semua gui dapat ditampilkan }
Pemrograman Berbasis Objek - 2011
26
//deklarasi method untuk menampilkan aksi jika tombol hitung diklik public void actionPerformed(ActionEvent e) { //perintah untuk menentukkan harga tiket sesuai tujuan String item = (String)tuj.getSelectedItem();
*buat seleksi if bersarang dengan kondisi : jika tujuan Jakarta maka harga tiket 100000 jika tujuan Cirebon maka harga tiket 15000 jika tujuan Tasikmalaya maka harga tiket 20000 selain dari ketiga tujuan diatas maka harga tiket 0 ................... ................... ................... ................... Object
obj= e.getSource();
if (obj == hitung) {//perintah menghitung diskon dan total harga tiket jum = Integer.parseInt(txtujumlah.getText()); sub = jum * ht ; if (cb.isSelected()) if (cb.isSelected()) {disc = 0.10 * sub;} else {disc = 0.0;} total = sub-disc; Pemrograman Berbasis Objek - 2011
27
txtharga.setText("Rp. "+ht); txtsub.setText("Rp. "+sub); txtdiskon.setText("Rp. "+disc); txttotal.setText("Rp. "+total); } //perintah jika tombol ulangi diklik maka semua inputan akan direset lagi. if (obj == ulangi) { txtnama.setText(""); txtujumlah.setText(""); txtharga.setText(""); txtsub.setText(""); txtdiskon.setText(""); txttotal.setText(""); } } } public class Travel //program utama { public static void main(String[] arg) { new tampilan(); //penggil method tampilan } } Pemrograman Berbasis Objek - 2011
28
Step 2 : Ikuti langkah berikut untuk meng-compile program yang telah Anda buat. y
Buka command prompt Anda.
y
Masuk ke direktori dan folder tempat program tersebut disimpan. Misal program disimpan pada direktori D Æ folder “praktikan” Perintah masuk/pindah ke direktori D, ketik Î D: Perintah masuk ke folder “praktikan”, ketik Î cd<spasi>praktikan
y
Setelah masuk ke direktori dan folder yang dituju, untuk meng-compile program Anda ketikkan perintah : javac<spasi> Travel.java Contoh : javac TestVehicle.java
Step 3 : Untuk menjalankan program yang telah Anda buat, ketikkan perintah : java<spasi>NamaFile Contoh : java Travel
Pemrograman Berbasis Objek - 2011
29
Tampilan Output
Pemrograman Berbasis Objek - 2011
30
Koreksi Latihan Program //import fungsi untuk menggunakan perintah swing dan awt import
javax.swing.JFrame;
import
javax.swing.JButton;
import
javax.swing.JLabel;
import
javax.swing.JTextField;
import
javax.swing.JCheckBox;
import
javax.swing.JComboBox;
import
java.awt.Font;
import
java.awt.Color;
import
java.awt.event.ActionListener;
import
java.awt.event.ActionEvent ;
import
java.awt.event.ItemListener;
import
java.awt.event.ItemEvent ;
Pemrograman Berbasis Objek - 2011
31
class tampilan extends JFrame implements ActionListener { private int
ht,sub,jum;
private double disc,total; private String[] item = {"","Jakarta","Cirebon","Tasikmalaya"}; private JComboBox tuj = new JComboBox(item); private JLabel judul = new JLabel("Program Travel Bintang Kejora"); private JLabel nama = new JLabel("Nama"); private JLabel tujuan = new JLabel("Tujuan"); private JLabel jumlah = new JLabel("Jumlah Tiket"); private JLabel member = new JLabel("Member"); private JCheckBox cb = new JCheckBox ("Ya"); private JLabel harga = new JLabel("Harga Tiket"); private JLabel sub_t
= new JLabel("Sub Total");
private JLabel diskon = new JLabel("Diskon"); private JLabel t_harga = new JLabel("Total Harga"); private JTextField txtnama = new JTextField(); private JTextField txtujumlah = new JTextField(); private JTextField txtharga = new JTextField(); private JTextField txtsub = new JTextField(); private JTextField txtdiskon = new JTextField(); private JTextField txttotal = new JTextField(); private JButton hitung = new JButton("Hitung"); private JButton ulangi = new JButton("Ulangi"); Pemrograman Berbasis Objek - 2011
32
tampilan() { super("Program Travel Created By Andriyan"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocation(100,100); setSize(495,250); setLayout(null); add(judul); add(nama); add(txtnama); add(tujuan); add(tuj); add(jumlah); add(txtujumlah); add(member); add(cb); add(harga); add(txtharga); add(sub_t); add(txtsub); add(diskon); add(txtdiskon); add(t_harga); add(txttotal); add(hitung); add(ulangi); judul.setFont(new Font("Times New Roman",Font .BOLD,20)); judul.setBounds(10,10,300,20); nama.setBounds(10,50,100,20); txtnama.setBounds(120,50,100,20); tujuan.setBounds(10,75,100,20); tuj.setBounds(120,75,100,20); jumlah.setBounds(10,100,100,20); txtujumlah.setBounds(120,100,100,20); member.setBounds(10,125,100,20); cb.setBounds(115,125,100,20); harga.setBounds(260,50,100,20); txtharga.setBounds(370,50,100,20);
Pemrograman Berbasis Objek - 2011
33
sub_t.setBounds(260,75,100,20); txtsub.setBounds(370,75,100,20); diskon.setBounds(260,100,100,20); txtdiskon.setBounds(370,100,100,20); t_harga.setBounds(260,125,100,20); txttotal.setBounds(370,125,100,20); hitung.setBounds(130,175,100,20); ulangi.setBounds(250,175,100,20); tuj.addActionListener(this); cb.addActionListener(this); hitung.addActionListener(this); ulangi.addActionListener(this); setVisible(true); } public void actionPerformed(ActionEvent e) { String item = (String)tuj.getSelectedItem(); if (item.equals("Jakarta")) {ht
= 100000;}
else if (item.equals("Cirebon")) {ht
= 15000;}
else if (item.equals("Tasikmalaya")) {ht
= 20000;}
Pemrograman Berbasis Objek - 2011
34
else {ht
= 0;}
Object
obj= e.getSource();
if (obj == hitung) { jum = Integer.parseInt(txtujumlah.getText()); sub = jum * ht ; if (cb.isSelected()) if (cb.isSelected()) {disc = 0.10 * sub;} else {disc = 0.0;} total = sub-disc; txtharga.setText("Rp. "+ht); txtsub.setText("Rp. "+sub); txtdiskon.setText("Rp. "+disc); txttotal.setText("Rp. "+total); } if (obj == ulangi) { txtnama.setText(""); txtujumlah.setText(""); txtharga.setText(""); txtsub.setText("");
Pemrograman Berbasis Objek - 2011
35
txtdiskon.setText(""); txttotal.setText(""); } } }
public class Travel //program utama { public static void main(String[] arg) { new tampilan(); } }
Pemrograman Berbasis Objek - 2011
36