PERTEMUAN 6
AWT & SWING
Obyektif Praktikum :
y
Memahami persamaan dan perbedaan antara AWT dan Swing.
yMendesain aplikasi GUI menggunakan AWT.
y
Memahami action pada objek dalam Java.
yMendesain aplikasi GUI menggunakan Swing.
yPerbedaan antara komponen dan kontainer.
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
Class pada AWT
yWindow Classes Fundamental
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 <nama objek>=new Button(<Text Button>); ¾
Label
Label adalah class pada java yang digunakan untuk menampilkan sebuah text
pada window.
Bentuk umum :
Label <nama objek>=new Label(<Isi dari Text>); ¾
TextField
KOMPONEN GUI PADA AWT
yGrafik
Beberapa method grafik ditemukan dalam class Graphic. Dibawah ini adalah daftar dari beberapa
method.
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(); }
}
PEMROGRAMAN SWING
yKomponen - Komponen Swing
¾
Top-level container berfungsi untuk menyediakan ruang bagi komponen-
komponen
lainnya. Container jenis ini terdiri atas JFrame, JWindow, Jdialog, dan Japplet.
¾
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
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) {
Swing sw=new Swing(); }
}
LAYOUT MANAGER
yFlowLayout 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
dan
vertikal gap dimasukkan pada komponen sebagai default.
2.
FlowLayout(int align)
Membuat object baru FlowLayout dengan posisi spesifik dan lima unit horizontal
dan
vertikal gap dimasukkan pada komponen sebagai default.
3.
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
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); } }
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
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); }
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.
yConstructor GridLayout
1.
GridLayout()
Membuat object GridLayout baru dengan satu baris dan satu kolom
sebagai default
2.GridLayout(int rows, int cols)
Membuat object GridLayout baru dengan jumlah baris dan kolom sesuai
dengan
keinginan
3.
GridLayout(int rows, int cols, int hgap, int vgap)
Membuat object GridLayout baru dengan jumlah baris dan kolom yang
ditentukan. Unit
spasi hgap horizontal dan vgap vertikal diaplikasikan ke
dalam komponen.
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); } }
JBUTTON, JLABEL DAN JTEXTFIELD
yJLabel
JLabel merupakan komponen yang digunakan untuk menampilkan teks yang pendek atau gambar
atau keduanya. Komponen Label memiliki konstruktor sebagai berikut :
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(); }
JBUTTON, JLABEL DAN JTEXTFIELD
yJButton
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.
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(); } }
JBUTTON, JLABEL DAN JTEXTFIELD
yJTextField
JTextField merupakan objek yang berguna untuk memasukkan atau mengedit data satu baris.
Komponen JTextField memiliki konstruktor sebagai berikut :
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);
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();
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
yKetikkan 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;//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 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);
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);
//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
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(""); } } }
Step 2 :
Ikuti langkah berikut untuk meng-compile program yang telah Anda buat.
yBuka 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 :
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 ;
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();
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);
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"))
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("");
txtdiskon.setText(""); txttotal.setText(""); }
} }
public class Travel //program utama {
public static void main(String[] arg) {
new tampilan(); }