AWT (ABSTRACT WINDOWS TOOLKITS) Pendahuluan Pada pertemuan kali ini, kita akan membahas paket AWT sebuah paket yang telah ada dalam Java yang dapat digunakan untuk merancang GUI (Graphical User Interface). Programprogram modern sekarang ini biasanya dibuat dalam bentuk form, dialog box, dadn menu. Dengan GUI, user dapat melakukan pilihan secara cepat dan mudah dengan menggunakan mouse. Abstract Window Toolkit disebut toolkit karena didalamnya tersedia class-class yang telah dirancang untuk membuat GUI. Paket AWT termasuk paket jadi untuk setiap versi Java. Berbeda dengan AWT, JSwing juga merupakan paket dari Java untuk merancang GUI tetapi paket JSwing ini merupakan paket tambahan yang harus di download secara terpisah.
GUI (Graphical User Interface) Sistem yang dirancang secara grafik untuk mempermudah interaksi dengan user dikenal dengan istilah GUI.
Gambar di atas memperlihatkan sebuah dialog-box untuk mencetak pada aplikasi Word. Pada gambar di atas anda dapat melihat komponen-komponen GUI seperti menu, button, radio button, list-box dan lain-lain. Sebuah button (tombol) dapat ditekan dengan mouse dan memiliki tulisan yang merepresentasikan arti dari tombol tersebut.
Author: Taufik Fuadi Abidin, M.Tech @ 2002
1
Permograman Secara Event-Driven Program AWT dirancang menggunakan event dan event-handlers. Sebuah event merupakan aksi dari suatu komponen GUI seperti penekanan mouse (mouse clicked) , penggeseran mouse (mouse dragged), penekanan tomboh (key pressed), pemilihan komponen menu dan lain-lain. Sebuah objek seperti button akan membangkitkan event. Bila sebuah button ditekan maka button tersebut akan melakukan aksinya (firing the event). Aksi yang akan dilakukan oleh button itu akan dikerjakan oleh sebuah objek yang dikenal dengan sebutan listener object. Anda sebagai programmerlah yang harus menentukan objek apa yang akan menjadi listener object untuk sebuah objek yang membangkitkan event. Sebagai contoh, bila anda klik mouse pada sebuah objek button (tombol), dan button tersebut memiliki listener object maka aksi dari penekanan tombol itu akan langsung dikirim ke listener object tersebut. Sebuah listerner object memiliki metode-metode yang menentukan apa yang akan terjadi pada saat button tersebut ditekan. Metode-metode ini dikenal dengan istilah event-handlers. Contoh Window Sederhana Untuk dapat menggunakan AWT diperlukan paket awt sebagai berikut: import java.awt.*; import java.awt.event.*; Bila kita ingin membuat sebuah frame maka class yang akan dibuat harus menurunkan sifat dari class Frame. Perhatikan program berikut ini: import java.awt.*; import java.awt.event.*; public class MyFrame extends Frame { public void paint(Graphics g) { g.drawString("Frame dengan AWT", 75, 100); } } import java.awt.*; import java.awt.event.*; public class TutupFrame extends WindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); } }
Author: Taufik Fuadi Abidin, M.Tech @ 2002
2
import java.awt.*; import java.awt.event.*; public class FrameDemo { public static final int WIDTH = 300; public static final int HEIGHT = 200; public static void main(String args[]) { MyFrame mf = new MyFrame(); mf.setSize(WIDTH, HEIGHT); TutupFrame tf = new TutupFrame(); mf.addWindowListener(tf); mf.setVisible(true); } } Output dari program di atas bila dijalankan berbentuk kira-kira:
Penjelasan Program Pada program FrameDemo diatas sebuah objek mf yang bertipe MyFrame. Melalui objek mf itu metode setSize dieksekusi. Metode setSize merupakan method yang diturunkan (inherite) dari class Frame yang berfungsi untuk menentukan ukuran dari frame yang ingin dibuat. Dalam hal ini berukuran lebar 300 dan tinggi 200. Untuk menutup window anda dapat menekan tombol X pada sudut kanan atas frame. Ketika anda menekan tombol tersebut, frame mengerjakan event dan event mengirimkan aksi tersebut ke listener object. Dalam hal ini sebuah listener object dibuat dengan nama tf bertipe class TutupFrame yang menurunkan sifat dari class WindowAdapter (lihat class FrameDemo baris ke 11). Untuk lebih jelas tentang class WindowAdapter lihat dokumentasi Java. setVisible juga merupakan method yang telah didefine dalam class Frame. Akibat dari statement mf.setVisible(true) adalah membuat frame menjadi terlihat dilayar. Jika parameter false yang dikirim maka frame tidak akan telihat dilayar tetapi ada dalam memory.
Author: Taufik Fuadi Abidin, M.Tech @ 2002
3
Komponen AWT Yang Lain Pada contoh berikut ini class yang digunakan tidak hanya Frame, tetapi juga class Panel, Button, Rectangle, Graphics dan beberapa interface seperti interface ActionListener dan MouseMotionListener. Untuk lebih dipahami, perhatikan program berikut ini dan hasilnya dan diskusikan hasilnya.
Demo Program Scribble import java.awt.*; import java.awt.event.*; public class Scribble extends Frame implements ActionListener, MouseMotionListener { private final int WIDTH = 600; private final int HEIGHT = 300; private int lastX = 0, lastY = 0; private int x = 0, y = 0; public Scribble() // Constructor { setSize(WIDTH, HEIGHT); setTitle("Pelatihan Java AWT Lanjutan"); setBackground(Color.cyan); setLayout(new BorderLayout()); Panel control = new Panel(); control.setLayout(new FlowLayout()); control.setBackground(Color.gray); Button clear = new Button("Clear"); Button exit = new Button("Exit"); clear.addActionListener(this); exit.addActionListener(this); control.add(clear); control.add(exit); add("South",control); addMouseMotionListener(this); } // Dibuat karena class ini meng-implements interface // ActionListener public void actionPerformed(ActionEvent e) { Rectangle r = getBounds(); Graphics g = getGraphics(); if(e.getActionCommand().equals("Clear"))
Author: Taufik Fuadi Abidin, M.Tech @ 2002
4
{ g.setColor(getBackground()); g.fillRect(0, 0, r.width, r.height); } else if(e.getActionCommand().equals("Exit")) { System.exit(0); } } // Dibuat karena class ini implements interface // MouseMotionListener public void mouseMoved(MouseEvent e) { lastX = e.getX(); lastY = e.getY(); } public void mouseDragged(MouseEvent e) { Graphics g = getGraphics(); x = e.getX(); y = e.getY(); g.drawLine(lastX, lastY, x, y); lastX = x; lastY = y; } // Tuliskan method main untuk menjalankan program public static void main(String args[]) { Scribble scrib = new Scribble(); scrib.setVisible(true); } }
Author: Taufik Fuadi Abidin, M.Tech @ 2002
5
Bila program ini dijalankan anda akan melihat gambar sebagai berikut:
Jika tombol Clear ditekan maka tampilan akan menjadi:
Sedangkan bila tombol Exit ditekan maka editor Scribble akan tertutup dan di-free dari memori.
Author: Taufik Fuadi Abidin, M.Tech @ 2002
6