Pengantar AWT

Pustaka kelas bahasa pemrograman Java menyediakan perangkat antarmuka pengguna yang disebut Alat Jendela Abstrak, atau AWT. AWT kuat dan fleksibel. Pendatang baru, bagaimanapun, sering menemukan bahwa kekuatannya terselubung. Deskripsi kelas dan metode yang ditemukan dalam dokumentasi terdistribusi memberikan sedikit panduan untuk programmer baru. Selain itu, contoh yang tersedia seringkali meninggalkan banyak pertanyaan penting yang tidak terjawab. Tentu saja, pendatang baru harus mengharapkan kesulitan. Antarmuka pengguna grafis yang efektif secara inheren menantang untuk dirancang dan diterapkan, dan interaksi yang terkadang rumit antar kelas di AWT hanya membuat tugas ini lebih kompleks. Namun, dengan panduan yang tepat, pembuatan antarmuka pengguna grafis menggunakan AWT tidak hanya mungkin, tetapi relatif mudah.

Artikel ini membahas beberapa filosofi di balik AWT dan membahas masalah praktis tentang cara membuat antarmuka pengguna yang sederhana untuk applet atau aplikasi.

Apa itu antarmuka pengguna

Antarmuka pengguna adalah bagian dari program yang berinteraksi dengan pengguna program. Antarmuka pengguna memiliki banyak bentuk. Bentuk-bentuk ini beragam dalam kompleksitas dari antarmuka baris perintah sederhana hingga antarmuka pengguna grafis tunjuk-dan-klik yang disediakan oleh banyak aplikasi modern.

Pada tingkat terendah, sistem operasi mengirimkan informasi dari mouse dan keyboard ke program sebagai masukan, dan menyediakan piksel untuk keluaran program. AWT dirancang agar pemrogram tidak perlu khawatir tentang detail pelacakan mouse atau membaca keyboard, atau memperhatikan detail penulisan ke layar. AWT menyediakan antarmuka berorientasi objek yang dirancang dengan baik ke layanan dan sumber daya tingkat rendah ini.

Karena bahasa pemrograman Java tidak bergantung pada platform, AWT juga harus tidak bergantung pada platform. AWT dirancang untuk menyediakan seperangkat alat umum untuk desain antarmuka pengguna grafis yang bekerja pada berbagai platform. Elemen antarmuka pengguna yang disediakan oleh AWT diimplementasikan menggunakan perangkat GUI asli setiap platform, dengan demikian menjaga tampilan dan nuansa dari setiap platform. Ini adalah salah satu poin terkuat AWT. Kerugian dari pendekatan semacam itu adalah kenyataan bahwa antarmuka pengguna grafis yang dirancang pada satu platform mungkin terlihat berbeda ketika ditampilkan di platform lain.

Komponen dan wadah

Antarmuka pengguna grafis dibangun dari elemen grafis yang disebut komponen. Komponen tipikal mencakup item seperti tombol, scrollbar, dan bidang teks. Komponen memungkinkan pengguna untuk berinteraksi dengan program dan memberikan umpan balik visual kepada pengguna tentang status program. Di AWT, semua komponen antarmuka pengguna adalah contoh dari Komponen kelas atau salah satu subtipe-nya.

Komponen tidak berdiri sendiri, melainkan ditemukan di dalam wadah. Wadah berisi dan mengontrol tata letak komponen. Wadah adalah komponen itu sendiri, dan dengan demikian dapat ditempatkan di dalam wadah lain. Di AWT, semua container adalah instance dari class Container atau salah satu subtipe nya.

Secara spasial, komponen harus benar-benar pas di dalam wadah yang memuatnya. Komponen bersarang ini (termasuk wadah) ke dalam wadah membuat pohon elemen, dimulai dengan wadah di akar pohon dan meluas ke daun, yang merupakan komponen seperti tombol.

Ilustrasi pada Gambar 1 menggambarkan antarmuka pengguna grafis sederhana seperti yang akan terlihat ketika ditampilkan di bawah Windows 95. Gambar 2 menunjukkan komponen antarmuka dari Gambar 1 disusun sebagai pohon.

Jenis komponen

Gambar 3 menunjukkan hubungan warisan antara kelas komponen antarmuka pengguna yang disediakan oleh AWT. Class Component mendefinisikan antarmuka yang harus dipatuhi oleh semua komponen.

AWT menyediakan sembilan kelas komponen non-kontainer dasar dari mana antarmuka pengguna dapat dibuat. (Tentu saja, kelas komponen baru dapat diturunkan dari salah satu dari ini atau dari Komponen kelas itu sendiri.) Sembilan kelas ini adalah Kelas Tombol, Kanvas, Kotak Centang, Pilihan, Label, Daftar, Scrollbar, TextArea, dan BidangTeks. Gambar 4 menggambarkan sebuah instance dari setiap kelas.

Anda memerlukan browser yang mendukung Java untuk melihat applet ini.

Gambar 4.

Sembilan komponen antarmuka pengguna

Sumber tampilan ini ditemukan di sini.

Jenis wadah

AWT menyediakan empat kelas kontainer. Mereka adalah kelas Window dan dua subtipe - kelas Frame dan kelas Dialog - serta kelas Panel. Selain wadah yang disediakan oleh AWT, kelas Applet adalah wadah - ini adalah subtipe dari kelas Panel dan karena itu dapat menampung komponen. Deskripsi singkat dari setiap kelas kontainer yang disediakan oleh AWT tersedia di bawah ini.

Jendela Permukaan tampilan tingkat atas (jendela). Sebuah instance dari kelas Window tidak dilampirkan atau disematkan dalam wadah lain. Sebuah instance dari kelas Window tidak memiliki batas dan judul.
Bingkai Permukaan tampilan tingkat atas (jendela) dengan bingkai dan judul. Sebuah instance dari kelas Frame mungkin memiliki bilah menu. Hal ini sangat mirip dengan instance kelas Window.
Dialog Permukaan tampilan tingkat atas (jendela) dengan bingkai dan judul. Sebuah instance dari kelas Dialog tidak bisa ada tanpa instance terkait dari kelas Frame.
Panel

Wadah umum untuk menampung komponen. Sebuah instance dari kelas Panel menyediakan wadah untuk menambahkan komponen.

Membuat wadah

Sebelum menambahkan komponen yang membentuk antarmuka pengguna, pemrogram harus membuat wadah. Saat membangun aplikasi, programmer harus terlebih dahulu membuat instance dari class Window atau class Frame. Saat membuat applet, bingkai (jendela browser) sudah ada. Karena kelas Applet adalah subtipe dari kelas Panel, pemrogram dapat menambahkan komponen ke instance kelas Applet itu sendiri.

Kode pada Listing 1 membuat bingkai kosong. Judul frame ("Contoh 1") ditetapkan dalam panggilan ke konstruktor. Sebuah frame awalnya tidak terlihat dan harus dibuat terlihat dengan menjalankan show()metodenya.

import java.awt. *;

public class Example1 {public static void main (String [] args) {Frame f = new Frame ("Contoh 1");

f.show (); }}

Daftar 1.

Bingkai kosong

Kode di properti 2 memperluas kode dari daftar 1 sehingga kelas baru mewarisi dari panel kelas. Dalam main()metode ini, instance dari kelas baru ini dibuat dan ditambahkan ke objek Frame melalui panggilan ke add()metode. Hasilnya kemudian ditampilkan. Hasil dari kedua contoh akan terlihat sama (artinya, keduanya terlihat tidak menarik).

import java.awt. *;

public class Example1a meluas Panel {public static void main (String [] args) {Frame f = new Frame ("Contoh 1a");

Example1a ex = new Example1a ();

f.add ("Center", ex);

f. paket (); f.show (); }}

Daftar 2.

Bingkai dengan panel kosong

Dengan menurunkan kelas baru dari kelas Applet alih-alih Panel kelas, contoh ini sekarang dapat dijalankan sebagai aplikasi mandiri atau sebagai applet yang disematkan di halaman Web. Kode untuk contoh ini tersedia di Listing 3. Applet yang dihasilkan ditampilkan pada Gambar 5 (dan masih kurang menarik).

import java.awt. *;

public class Example1b extends java.applet.Applet {public static void main (String [] args) {Frame f = new Frame ("Contoh 1b");

Example1b ex = new Example1b ();

f.add ("Center", ex);

f. paket (); f.show (); }}

Daftar 3.

Bingkai dengan applet kosong

Anda memerlukan browser yang mendukung Java untuk melihat applet ini.

Gambar 5.

Bingkai kosong

Catatan: sebuah objek Window, dan dalam kasus tertentu bahkan sebuah objek Dialog, dapat menggantikan objek Frame. Mereka semua adalah wadah yang valid, dan komponen ditambahkan ke masing-masing dengan cara yang sama.

Menambahkan komponen ke wadah

Agar berguna, antarmuka pengguna harus terdiri dari lebih dari sekadar wadah - itu harus berisi komponen. Komponen ditambahkan ke wadah melalui metode wadah add(). Ada tiga bentuk dasar add()metode ini. Metode yang digunakan bergantung pada pengelola tata letak wadah (lihat bagian berjudul Tata letak komponen ).

Kode dalam Kode 4 menambahkan pembuatan dua tombol ke kode yang disajikan dalam Kode 3. Pembuatan dilakukan dalam init()metode karena secara otomatis dipanggil selama inisialisasi applet. Oleh karena itu, tidak peduli bagaimana program dimulai, tombol dibuat, karena init()dipanggil oleh browser atau oleh main()metode. Gambar 6 berisi applet yang dihasilkan.

import java.awt. *;

public class Example3 extends java.applet.Applet {public void init () {add (Tombol baru ("Satu")); tambahkan (Tombol baru ("Dua")); }

public Dimension preferSize () {return new Dimension (200, 100); }

public static void main (String [] args) {Frame f = new Frame ("Contoh 3");

Example3 ex = new Example3 ();

mis. init ();

f.add ("Center", ex);

f. paket (); f.show (); }}

Daftar 4.

Sebuah applet dengan dua tombol

Anda memerlukan browser yang mendukung Java untuk melihat applet ini.

Gambar 6.

Sebuah applet dengan dua tombol

Tata letak komponen

Sampai saat ini, belum ada yang dikatakan tentang bagaimana komponen yang telah ditambahkan ke wadah ditata. Tata letak dikontrol bukan oleh penampung, tetapi oleh pengelola tata letak yang terkait dengan penampung. Manajer tata letak membuat semua keputusan penempatan komponen. Di AWT, semua kelas pengelola tata letak mengimplementasikan antarmuka LayoutManager.

AWT menyediakan lima manajer tata letak. Mulai dari yang sangat sederhana hingga yang sangat kompleks. Artikel ini hanya membahas dua kelas pengelola tata letak yang digunakan oleh contoh di sini: kelas FlowLayout dan kelas BorderLayout.

Kelas FlowLayout menempatkan komponen dalam wadah dari kiri ke kanan. Saat ruang dalam satu baris habis, baris lain dimulai. Versi argumen tunggal dari metode penampung add()digunakan untuk menambahkan komponen.

Kelas BorderLayout memiliki lima zona seperti yang digambarkan pada Gambar 7. Zona tersebut dinamai "Utara", "Selatan", "Timur", "Barat", dan "Tengah". Satu komponen dapat ditempatkan di masing-masing dari lima zona ini. Ketika wadah penutup diubah ukurannya, setiap zona perbatasan diubah ukurannya cukup untuk menampung komponen yang ditempatkan di dalamnya. Setiap kelebihan ruang diberikan ke zona tengah. Versi dua argumen dari metode penampung add()digunakan untuk menambahkan komponen. Argumen pertama adalah objek String yang menamai zona tempat komponen akan ditempatkan.

Setiap kelas penampung memiliki pengelola tata letak default. Manajer layout default untuk kelas Frame dan kelas Dialog adalah manajer BorderLayout. Manajer layout default untuk kelas Panel (dan kelas Applet) adalah manajer FlowLayout.

Kode dalam Daftar 5 menggunakan kedua manajer tata letak dan menyertakan beberapa komponen antarmuka pengguna. Hasilnya ditampilkan pada Gambar 8.

import java.awt. *;

public class Example4 memperluas java.applet.Applet {public void init () {Panel p;

setLayout (new BorderLayout ());

p = Panel baru ();

p.add (TextArea baru ());

tambahkan ("Center", p);

p = Panel baru ();

p.add (Tombol baru ("Satu")); p.add (Tombol baru ("Dua"));

Pilihan c = Pilihan baru ();

c.addItem ("satu"); c.addItem ("dua"); c.addItem ("tiga");

p.add (c);

tambahkan ("Selatan", p); }

public static void main (String [] args) {Frame f = new Frame ("Contoh 4");

Example4 ex = new Example4 ();

mis. init ();

f.add ("Center", ex);

f. paket (); f.show (); }}

Daftar 5.

Contoh yang lebih rumit

Anda memerlukan browser yang mendukung Java untuk melihat applet ini.

Angka 8.

Contoh yang lebih rumit

Penanganan acara

Contoh di atas tidak lebih dari menampilkan antarmuka pengguna yang tidak aktif. Tentu saja, sangat penting bahwa antarmuka pengguna mengambil tindakan sebagai hasil dari masukan pengguna. Namun, artikel ini di luar cakupan untuk menyelidiki secara mendalam misteri penanganan peristiwa. Itu harus menunggu sampai artikel yang akan datang. Namun, demi kelengkapan, contoh kode dalam Daftar 6 menunjukkan bagaimana menangani satu jenis acara yang mungkin diterima program. Kelas baru menggantikan action()metode yang disediakan oleh kelas Komponen. The action()Metode merespon peristiwa tindakan yang dihasilkan, misalnya, dengan pemilihan item dari daftar pop-up. Ituaction()metode membutuhkan dua parameter yang disediakan, contoh Peristiwa dan contoh Objek. Contoh Peristiwa berisi informasi tentang peristiwa, termasuk target peristiwa (komponen yang pertama menerima peristiwa), koordinat x dan y peristiwa, dan waktu peristiwa terjadi. Instance Object menyimpan bagian data khusus acara. Untuk objek Button itu berisi teks di label tombol.

import java.awt. *;

public class Example5 memperluas java.applet.Applet {TextArea ta = null;

public void init () {Panel p;

setLayout (new BorderLayout ());

p = Panel baru ();

ta = new TextArea ();

p.add (ta);

tambahkan ("Center", p);

p = Panel baru ();

p.add (Tombol baru ("Satu")); p.add (Tombol baru ("Dua"));

Pilihan c = Pilihan baru ();

c.addItem ("satu"); c.addItem ("dua"); c.addItem ("tiga");

p.add (c);

tambahkan ("Selatan", p); }

tindakan boolean publik (Acara e, Objek o) {String str = (String) o;

ta.appendText (str + "\ n");

return false; }

public static void main (String [] args) {Frame f = new Frame ("Contoh 5");

Example5 ex = new Example5 ();

mis. init ();

f.add ("Center", ex);

f. paket (); f.show (); }}

Daftar 6.

Contoh penanganan event