KELAS INNER, KELAS ABSTRAK, DAN INTERFACE 14th week Estu Sinduningrum ST,MT
Estu Sinduningrum, ST, MT
KELAS INNER (INNER CLASS)
Kerangka umum program yang berorientasi objek. Sejauh ini Anda mengetahui bahwa dalam satu file *java terdapat satu
atau lebih kelas dan nusing-masing kelas mengandung data dan method.
Selain
bentuk
kerangka
umum
tersebut,
java
mcmperbolehkan Anda menyisipkan suatu kelas ke dalam kelas lainnya.
Kelas sisipan ini disebut Inner class.
Kelas Inner ini bersifat tersarang terhadap kelas utamanya, seperti halnya blok penyeleksian (if, for ) yang tersarang pada blok penyeleksian lainnya atau method yang tersarang pada method lainnya.
Estu Sinduningrum, ST, MT
KELAS INNER (INNER CLASS) Inner Class adalah Kelas yang disisipkan di dalam keras yang lain. Fungsi kelas sisipan ini adalah mendukung suatu proses yang akan dijalankan oleh kelas utamanya.
Estu Sinduningrum, ST, MT
KETENTUAN INNER CLASS 1.
Beberapa Ketentuan Inner Class adalah sebagai berikut: Bila sebuah kelas mengandung suatu inner kelas, maka pada saat kompilasi
akan dihasilkan file *.class untuk keduanya (kelas utama dan kelas inner nya).
File *.class akan memiliki nama NamaKelasTerluar$NamaKelasInner.class untuk kelas inner.
Bila kelas inner tersebut tidak diberi nama, maka format filenya menjadi: NamaKelasTerluar $#.class.
Simbol # menyatakan nomor urutan kelas inner.
2.
Inner Class yang dideklarasikan dengan nama dapat dibubuhi modifier public, private, dan protected.
3.
Gunakan bentuk NamaKelasTerluar.this untuk mengakses referensi this dari kelas terluar.
Estu Sinduningrum, ST, MT
KERANGKA KELAS YANG MENGGANDUNG INNER CLASS
Estu Sinduningrum, ST, MT
KETENTUAN INNER CLASS 4.
Dalam proses pembentukan objek, Kelas Terluar bertanggung jawab untuk menciptakan objek dari Kelas Innemy'a. Prosesnya adalah sebagai berikut:
Buat objek dari Kelas Terluar (misal objek tersebut a);
Menugaskan objek tersebut kepada sutu objek referensi dari hasil instansiasi.
Kelas Inner (misal objek referensi Kelas Inner b.). KelasTerluar a = new KelasTerluar0; KelasTerluar. Kelaslnner b = a. new Kelaslnner();
Estu Sinduningrum, ST, MT
KETENTUAN INNER CLASS
Inner Class dapat dibubuhi modifier static.
Dengan modifier static, maka Anda dapat membuat objek dari kclas Inner tersebut tanpa harus melalui Kelas Terluarnya.
Sebagai konsekuensinnya, maka Kelas Inner tersebut tidak
dapat
mengakses
variabel
nonstatic dari Kelas Terluarnya.
maupun
method
LATIHAN 74
/** *Title : Kelas Inner *Deskripsi : Mendemonstrasikan Kelas Inner sebagai * suatu kelas yang tersarang terhadap * kelas lainnya. */ // Kelas Terluar class KelasTerluarA{ private String pesan = "Objek dari KelasTerluarA"; // Method konstruktor untuk kelas KelasTerluarA KelasTerluarA (String noObjek){ pesan = pesan + noObjek; } // Method cetak pesan yang dimiliki oleh kelas KelasTerluarA public void cetakPesan() { System.out.println(pesan); }
// Kelas Inner tingkat pertama class KelasInnerB { private String pesan = "Objek dari KelasInnerB"; // Method konstruktor untuk kelas KelasInnerB KelasInnerB (String noObjek){ pesan = pesan + noObjek; } // Method cetak pesan yang dimiliki oleh kelas KelasInnerB public void cetakPesan() { System.out.println(pesan); } // Kelas Inner tingkat kedua class KelasInnerC { private String pesan = "Objek dari KelasInnerC"; KelasInnerC(String noObjek){ pesan = pesan + noObjek; } // Method cetak pesan yang dimiliki oleh kelas KelasInnerC public void cetakPesan() {
/** Mencetak pesan dari variabel yang dimiliki *oleh objek dari KelasInnerA */ System.out.println(KelasTerluarA.this.pesan); KelasTerluarA.this.cetakPesan(); System.out.println("\n"); } }
} }
public class DemoKelasInner{ /** Main Method */ public static void main (String args[]) { /** *Mengakses method cetakPesan yang dimiliki oleh *KelasInnerC yang tersarang pada KelasTerluarA dan *Kelas InnerB --> A(B(C)) dengan membuat *objekKelasA --> *objekKelasB --> ObjekKelasC.namaMethod */ KelasTerluarA a = new KelasTerluarA("Cara 1"); KelasTerluarA.KelasInnerB b = a.new KelasInnerB("Cara 1"); KelasTerluarA.KelasInnerB.KelasInnerC c = b.new KelasInnerC("Cara 1"); c.cetakPesan();
/** *Mengakses method cetakPesan yang dimiliki oleh *KelasInnerC yang tersarang pada KelasTerluarA dan *Kelas InnerB --> A(B(C)) dengan membuat *objekKelasB --> *ojekKelasC.namaMethod */ KelasTerluarA.KelasInnerB bb = new KelasTerluarA("Cara2").new KelasInnerB("Cara2"); KelasTerluarA.KelasInnerB.KelasInnerC cc = bb.new KelasInnerC("Cara 2"); cc.cetakPesan(); /** *Mengakses method cetakPesan yang dimiliki oleh *KelasInnerC yang tersarang pada KelasTerluarA dan *Kelas InnerB --> A(B(C)) dengan membuat *ojekKelasC.namaMethod */ KelasTerluarA.KelasInnerB.KelasInnerC ccc = new KelasTerluarA("Cara3").new KelasInnerB("Cara3").new KelasInnerC("Cara3"); ccc.cetakPesan(); } }
Estu Sinduningrum, ST, MT
MENGGUNAKAN INNER CLASS
Konsep
Inner
class
sering
digunakan
untuk
menambahkan blok handler pada main method suatu aplikasi berbasis GUI.
Blok Handler merupakan bagian program yang akan
memproses
event-event
yang
dipicu
ketika
berinteraksi dengan komponen-komponen GUI
user
LATIHAN 75
/** *Title : Demo JButton Inner Class *Deskripsi : Membuat aplikasi Button sederhana * dengan handlernya menggunakan *prinsip Inner Class */ import java.awt.*; import java.awt.event.*; import javax.swing.*; public class DemoJButtonInner extends JFrame { // Mendeklarasikan button private JButton btn; // Konstruktor Default public DemoJButtonInner() { super("Demo Jbutton Inner Class"); Container c = getContentPane(); c.setLayout( new FlowLayout()); // Menugaskan objek-objek Jbutton btn = new JButton("Button"); c.add(btn); // Membuat objek (instans) dari inner class ButtonHandler
// yang digunakan untuk button event handling ButtonHandler handler = new ButtonHandler(); btn.addActionListener(handler); setSize(275,100); show(); } /** Main Method */ public static void main (String args[]) { DemoJButtonInner app = new DemoJButtonInner(); app.addWindowListener ( new WindowAdapter(){ public void windowClosing(WindowEvent e) { System.exit(0); } } ); } // Inner Class untuk "Event handling" pada button private class ButtonHandler implements ActionListener { public void actionPerformed (ActionEvent e) { JOptionPane.showMessageDialog (null, "Anda telah menekan :" + e.getActionCommand() + "\n" + "Handler Button ini menggunakan prinsip Inner Class"); } } }
Estu Sinduningrum, ST, MT
KELAS ABSTRAK (ABSTRACT CLASS)
Kelas Abstrak (Abstract class) adalah kelas yang terletak pada posisi tertinggi dari hierarki kelas.
Kelas ini digunakan sebagai basis bagi penurunan kelaskelas lainnya, sehingga tidak dapat diinstansiasi secara langsung menjadi objek.
Sebagai kelas basis, kelas ini hanya berisi variabel umum dan deskripsi method tanpa detail implementasi.
Selanjutnya, kelas-kelas yang diturunkan dari kelas abstraklah yang harus mendefinisikan secara detail method tersebut.
Estu Sinduningrum, ST, MT
KELAS ABSTRAK (ABSTRACT CLASS) Kelas Abstrak Adalah kelas yang terletak pada posisi tertinggi dari hierarki kelas dari menjadi basis untuk mcnurunkan kelas-kelas lainnya.
Bentuk Umum :
(Modifier tambahan) abstract class NamaKelasAbstract{ Variabel umum dan Deskripsi method tanpa Implentasi; }
Estu Sinduningrum, ST, MT
ILUSTRASI
Asumsikan rerdapat suatu kelas MakhlukHidup yang merupakan kelas abstract semua makhluk yang hidup di bumi ini (manusia, hewan tumbuhan).
Anda ingin memiliki kelas yang dapat menginstans objek yang bernama Amir, Tati, Santi, dan John.
Tentu tidaklah mungkin untuk menginstans kelas MakhlukHidup langsung menjadi objek-objek tersebut
karena kelas tersebut hanya mendefinisikan data dan method umum yang berlaku untuk seluruh makhluk hidup (manusia, hewan, tumbuhan).
Estu Sinduningrum, ST, MT
ILUSTRASI
Karena kelas MakhlukHidup terletak pada hirarki teratas, maka Anda harus membentuk subkelas-subkelas untuk dapat menginstans objek Amir, Tati, dan seterusnya.
Subkelas ini bisa berupa MahlukHidup - Manusia atau bisa juga MakhlukHidup - Manusia - RasAsia - Indonesia pekerja, dan sebagainya.
Selanjutnya, organisasi
apabila
perusahaan,
Anda maka
mengacu kelas
kepada pekerja
struktur ini
dapat
dipandang sebagai suatu kelas abstrak bagi kelas-kelas yang diturunkan darinya, seperti Kelas Direktur, Kelas Manajer, Kelas Staff, Kelas Buruh, dan seterusnya
INTERFACE
Estu Sinduningrum, ST, MT
Adalah kumpulan method yang hanya memuat deklarasi dan struktur method, tanpa detail implementasinya.
Interface digunakan bila Anda ingin mengaplikasikan suatu method yang spesifik, yaitu tidak diperoleh dari proses pewarisan kelas, interlace bersifat disisipkan (embeded) pada program,
dan
programmer
diberi
keleluasaan
untuk
merancang dan mendefinisikan sendiri detail prosesnya.
Dalam
istilah
pemrograman,
Kelas
dan
Interfacc
fundamental yang dijadikan Library relerensi dikenal dengan istilah API (Application Programming Interface).
Estu Sinduningrum, ST, MT
DEKLARASI INTERFACE
Interface adalah kumpulan struktur method, tanpa detail
method yang hanya memuat deklarasi dan implementasinya
Interface dideklarasi kan sebagai berikut:
Modifier interface namaInterface { /* *Deklarasi konstanta*/ /**Signature method*/ }
LATIHAN 76
/** *Title : Demo Interface *Deskripsi : Menerapkan konsep interface */ /** Deklarasi Interface */ interface Konstanta { double KONST_PI = 3.14; String KONST_SATUAN_LUAS = "cm. persegi"; String KONST_SATUAN_PANJANG = "cm."; } public class DemoInterface implements Konstanta { /** Main Method */ public static void main (String args[]){ System.out.println("\nPROGRAM DEMO INTERFACE"); System.out.println("----------------------\n"); double radius = 10;
System.out.println("Radius Lingkaran :"+ radius); System.out.println("Luas Lingkaran :"+(KONST_PI*radius*radius)+KONST_SATUAN_LUAS); System.out.println("Keliling Lingkaran"+(2*KONST_PI*radius)+ Konstanta.KONST_SATUAN_PANJANG); } }
Estu Sinduningrum, ST, MT
Estu Sinduningrum, ST, MT
MENGAPA BUTUH INTERFACE?
Ada dua pertanyaan yang mungkin timbul saat ini. Pertama, bila Anda bisa mendefinisikan suatu kelas sedemikian
rapi
dan
lengkap,
mengapa
masih
dibutuhkan interface?
Pertanyaan kedua, apakah konsep pewarisan data dan method
(inheritance)
memecahkan masalah?
masih
belum
cukup
untuk
Estu Sinduningrum, ST, MT
MEMECAHKAN BAGIAN YANG RUMIT DAN SPESIFIK
Marilah kita tinjau prinsip perancangan program untuk menjawab pertanyaan pertama.
Dalam merancang suatu program.
Langkah-langkah yang sering dilakukan adalah mengidentifikasi dan menganalisa
masalah,
kemudian
melakukan
abstraksi
dan
konseptualisasi solusi, dan selanjutnya merancang resources dan komponen yang dibutuhkan.
Resource dan komponen dalam OOP dikenal sebagai kelas, data, method, interface, dan sebagainya.
Pada saat mcrancang resource dan komponen, terkadang ada bagian yang cukup rumit dan spesifik yang tidak belum disediakan oleh J2SDK.
Estu Sinduningrum, ST, MT
MEMECAHKAN BAGIAN YANG RUMIT DAN SPESIFIK 1.
Berikut ini dua pilihan untuk memecahkan masalah.
Membuatnya dari awal, mulai dari deklarasi kelas, menentukan
data,
dan
method
serta
detail
implementasi dari method tersebut. Prinsip ini sering
disebut
sebagai
Pemrograman
dari
Corat-Coret
(Programming from the Scratch). 2.
Memanfaatkan
solusi
yang
sudah
dibuat
rian
didefnisikan oleh suatu vendor dan menggunakannya dalam program.
Estu Sinduningrum, ST, MT
MEMECAHKAN BAGIAN YANG RUMIT DAN SPESIFIK
Prinsip pertama berarti Anda berusaha untuk menciptakan sendiri bagian yang spesifik dan rumit tersebut.
Ditinjau dari segi biaya, prinsip ini paling murah (low cost) karena Anda tidak perlu membeli resource dan omponen dari
vendor lain.
Kelemahannya adalah waktu perancangan lebih lama dan terkadang tidak sesuai untuk aplikasi yang membutuhkan kehandalan dan performansi yang tinggi, seperti pada aplikasi telekomunikasi dan keamanan transaksi bank (membutuhkan cryptography)
Estu Sinduningrum, ST, MT
MEMECAHKAN BAGIAN YANG RUMIT DAN SPESIFIK
Prinsip kedua memang lebih mudah dan relatif lebih cepat karena tinggal menggunakan kelas atau interface solusi yang telah dibuat oleh suatu vendor.
Selain itu, keandalan dan performansinya juga dijamin oleh vendor sehingga dapat diterapkan untuk aplikasi yang sangat kritis.
Bila resource ini bersifat gratis seperti J2SDK dari Sun, maka biaya bisa ditekan.
Namun bila harus membeli, biasanya harganya sangat mahal.
Estu Sinduningrum, ST, MT
KETERBATASAN INHERITANCE
Sebelum menjawab pertanyaan kedua, marilah Anda tinjau
lagi
sifat
dan
keterbatasan
pewarisan
(inheritance).
Inheritance adalah proses pewarisan data dan method
dari suatu kelas induk (kelas super) kepada kelas anaknva (subkelas).
Sebuah subkelas atau kelas turunan hanya boleh diturunkan dari satu kelas induk. tidak boleh lebih.
Estu Sinduningrum, ST, MT
KETERBATASAN INHERITANCE Dalam prinsip pewarisan (inheritance), kelas turunan (subclass) hanya boleh diturunkan dari satu kelas induk (kelas super).
Prinsip inheritance ini dapat dianalogikan sebagai proscs pewarisan genetika dan hubungan darah, dari
ayah dan ibu kenada anak-anaknya.
Sepasang suami istri dapat mcrniliki lebih dari satu anak, namun anak tidak mungkin berasal dari lebih dari satu pasangan suami istri.
Estu Sinduningrum, ST, MT
KETERBATASAN INHERITANCE
Kembali ke persoalan semula, bagaimana bila Anda ingin memiliki kelas yang di dalamnya terdapat methodmethod yang bcrasal dari beberapa library referensi (kelas) yang berbeda? Dalam hal inilah interface
berperan
karena
dengan
Interface
Anda
bisa
memasukkan method-method dari beberapa Libarary referensi tanpa harus menurunkannya dari suatu kelas Interface merupakan solusi atas prinsip pewarisan lebih dari satu (multiple inheritance). Dengan interface, suatu objek dapat memiliki behavior yang berasal dari beberapa referensi.
Estu Sinduningrum, ST, MT
KETERBATASAN INHERITANCE
Interface dapat diilustrasikan sebagai berikut.
Seorang artis ingin memiliki banyak keahlian dalam bidang
seni, seperti menyanyi, main film laga, dan melawak.
Dia ingin bergaya seperti seorang Ricky Martin, berkungfu seperti Jacky Chan, dan membuat penonton terpingkalpingkal bak Mr. Bean.
Apa yang harus dilakukannya? Tentu ia harus mempelajari bagaimana
aktor-aktor
tersebut
melakukannya,
dan
kemudian menambahkan pengetahuan tersebut sebagai
keahlian baru baginya.
Ia tidak perlu menjadi anak dari mereka untuk dapat meniru tingkah laku ketiga artis tersebut.
Estu Sinduningrum, ST, MT
APAKAH INTERFACE = KELAS ABSTRAK?
Pertanyaan selanjutnya adalah: apakah interface sama dengan kelas abstrak?
Ditinjau dari bagaimana kelas abstrak dan interfacc terdeklarasi,
memang
ada
kemiripan
di
antara
keduanya.
Kelas abstrak adalah kelas yang terletak pada hierarki teratas dari bagan kelas sehingga tidak mungkin
langsung diinstansiasi menjadi objek.
Demikian
juga
dengan
diinstansiasi menjadi objek.
interface,
ia
tidak
dapat
Estu Sinduningrum, ST, MT
APAKAH INTERFACE = KELAS ABSTRAK?
Meskipun ada kemiripan, namun Anda tidak bisa mengatakan
bahwa
interface
sama
dengan
kelas
abstrak.
Berikut ini data perbedaan di antara kelas abstrak,
kelas secara umum, serta interface.
Perbedaan Komponen penyusun Kelas Abstrak dan Interface adalah: 1
2
Tipe data/ Variabel Kelas Abstrak : Interface : Method Kelas Abstrak : Interface :
3
Sintaks Method Kelas Abstrak:
Interface :
semua tipe data. hanya boleh berupa konstanta. bisa berupa signature-nya saja atau berupa detail implementasi method. hanya berupa signature, programmer harus mendefinisikan dan membuat detail implementasi dari method. Jadi. method yang terdapat di dalam interfae adalah method abstrak. Semua method yang didelarasikan di dalam kelas abstrak harus dibubuhi modifier abstract. Tidak perlu membubuhkan modifier abstract pada semua method di dalam kelas
Perbedaan antara (secara umum) dan Interface adalah: 1
Defisi Kelas
:
Interface :
2
3
Pemodelan dari objek. kumpulan method yang hanya diterapkan pada aplikasi tertentu.
Kandungan informasi
Kelas :
Mendefinisikan variabel dan method secara detail dan konkret.
Interface :
hanya mendefinisikan signature dari method, selanjutnya programerlah yang menentukan detail method.
Instansiasi Kelas :
Bisa diinstansiasi menjadi objek.
Interface :
Tidak dapat diinstansiasi menjadi objek
Estu Sinduningrum, ST, MT
APAKAH INTERFACE = KELAS ABSTRAK?
Bila suatu kelas ingin menggunakan interface, maka pada deklarasi kelas tersebut harus ditambahkan keyword implements dan nama interface-nya.
Selanjutnya, method dari interface tersebut harus
disisipkan dan didefinisikan secara detail pada kelas
Estu Sinduningrum, ST, MT
MENGAPLIKASIKAN INTERFACE Interface
sering digunakan untuk menambahkan
event handling pada program. Contoh
yang bagus adalah saat Anda merancang
aplikasi GUI yang lengkap, mulai dari pemilihan komponen sampai perancangan bagian pemrosesan eventnya.
LATIHAN 77
/** *Title : Demo JButton Interface *Deskripsi : Membuat aplikasi Jbutton * Sederhana dengan handlernya menggunakan * konsep Inner Class */
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class DemoJButtonInterface extends JFrame implements ActionListener { // Mendeklarasikan button private JButton btn; // Konstruktor Default public DemoJButtonInterface() { super("Demo JButton Token.face"); Container c = getContentPane(); c.setLayout( new FlowLayout()); // menugaskan objek Jbutton btn = new JButton("Button"); c.add(btn); // Meregistrasi listener btn.addActionListener(this); setSize(275,100); show(); }
/** Main Method */ public static void main (String args[]) { DemoJButtonInterface app = new DemoJButtonInterface(); app.addWindowListener ( new WindowAdapter(){ public void windowClosing(WindowEvent e) { System.exit(0); }
}
);
}
// Method actionPerformed untuk memproses // event yang dipicu oleh listener public void actionPerformed (ActionEvent e) { JOptionPane.showMessageDialog (null, "Anda telah menekan :" + e.getActionCommand() + "\n" + "Handler Button ini menggunakan prinsip Interface"); } } Estu Sinduningrum, ST, MT
GUI BAGIAN 1: AWT (ABSTRACT WINDOWING TOOLKIT)
Estu Sinduningrum, ST, MT
PEMROGRAMAN GUI
Bagi sebagian bcsar pengguna, bekerja dengan I/O yang
berbasis text atau console adalah membosankan.
Sebagian besar pengguna lebih menyukai aplikasi yang bcrbasis GUI (Graphical User Interface) karena memiliki tampilan yang lebih interaktif.
Java menyediakan dua kelas untuk bekerja dengan GUI,
yaitu AWT (Abstract Windowing Toolkit) dan Swing.
Estu Sinduningrum, ST, MT
PEMROGRAMAN GUI
AWT terdapat dalam package java.awt.
Package ini berisi kompnnen-komponen GUI yang bersifat platform oriented atau tergantung pada suatu platform sistem operasi.
Swing ada pada package javax.swing dan bersifat lightweight, yaitu dapat diaplikasikan untuk semua platform (multiplatform).
Estu Sinduningrum, ST, MT
PEMROGRAMAN GUI
Beberapa fasilitas yang disediakan package java.awt adalah:
1.
Pengaturan
tata
letak
(layout
management)
komponen dalam suatu kontainer. 2.
Mendukung
event
handling,
yaitu
mekanisme
pendeteksian event dan penentuan respons yang akan diberikan ketika pengguna (user) mengakses komponen
tersebut. 3.
Manipulasi grafis dari komponen, seperti font, warna, icon, dan sebagainya.
Estu Sinduningrum, ST, MT
KOMPONEN
Kelas Component merupakan kelas abstrak dari semua komponen yang digunakan untuk merancang GUI.
Kelas ini memiliki beberapa subkelas yang merupakan kelas konkrit dari komponen-komponen kontrol GUI,
seperti Button, Label, CheckBox, dan sebagainya.
Estu Sinduningrum, ST, MT
KELAS COMPONENT DAN SUBKELASNYA Komponen
(Component)
Komponen
merupakan Kelas Super dari
semua komponen kontrol GUI yang bukan merupakan menu. Kelas ini menyediakan basic
support
untuk
event
handling,
pengubahan ukuran komponen (resizing), pengaturan font dan warna, dan sebagainya.
Estu Sinduningrum, ST, MT
KELAS COMPONENT DAN SUBKELASNYA
Komponen Kontrol GUI (Subkelas dari Component) Button
adalah tombol dengan label text dan akan mentrigger event ketika user mengklik/menekan tombol tersebut
Canvas
adalah komponen yang digunakan untuk menggambar dan merancang komponen GUl.
Checkbox
adalah komponen yang menyediakan suatu set pilihan yang dapat ditoggle on/off. CheckBox dapat dikelompokkan untuk membentuk radio button.
Choice
adalah komponen yang memberikan menu yang dapat muncul secara otomatis (pop-up).
Label
adalah komponen yang digunakan untuk menampilkan tulisan/pesan dimodifikasi.
yang
hanya
dapat
dibaca,
tidak
dapat
Estu Sinduningrum, ST, MT
KELAS COMPONENT DAN SUBKELASNYA
Komponen Kontrol GUI (Subkelas dari Component) List
adalah komponen yang berupa list pilihan yang dapat digulung (scroll).
Scrollbar
adalah komponen yang dapat digeser secara vertikal maupun horisontal untuk menunjukkan posisi atau suatu nilai
TextField
adalah komponen yang digunakan untuk menulis text yang berukuran kecil/singkat.
TextArea
Sama seped TextField, namun memiliki kapasitas lebih besar.
Estu Sinduningrum, ST, MT
KONTAINER
Container merupakan subkelas dari Component yang berfungsi
untuk
"memuat"
komponen-komponen
lainnya.
Kelas ini memiliki beberapa subkelas seperti Panel,
Window, Frame, dan sebagainya. Kontainer (Container) Kontainer adalah komponen yang digunakan untuk "memuat" kompcnen atau bahkan kontainer lainnya. Karena sifatnya ini,
container dapat diibaratkan sebagai root (akar) dari pohon hierarki komponen yang membentuk aplikasi.
Estu Sinduningrum, ST, MT
Sub kelas dari Container Panel
adalah kontainer paling ideal dan sering digunakan untuk "memuat komponen dan kontainer lainrya" dalam suatu hierarki.
Applet
adalah panel khrsus yang digunakan untuk membuat program yang dijalankan pada browser internet.
Window
merupakan kelas pada top level window yang tidak memiliki title dan border.
Frame
merupakan kelas pada top level window yan3 memiliki title bar, menu bar, dan border. Selain itu, frame juga dapat diubah-ubah ukurannya (resize) dan dapat dipindahkan.
Dialog
merupakan kelas pada top level window yang memiliki satu title bar dan suatu border. Sering digunakan untuk window yang utama untuk aplikasi. Dialog dapat diubai-ubah ukurannya (resize) dan dapat dipindahkan.
Estu Sinduningrum, ST, MT
KELAS CONTAINER
Kelas
Container
merancang
tata
Management).
Konstruktor:
Container()
lebih letak
sering
digunakan
komponen
GUI
dalam layout
Estu Sinduningrum, ST, MT
METHOD-METHOD KELAS CONTAINER: Tipe Kembalian
Method Kelas Container
Component add(Component comp)
Meng-append suatu komponen pada bagian akhir container ini. Component add(Component comp, int index)
Menambahkan suatu komponen ke container ini pada posisi yang telah ditentukan. void
add(Component comp, Object constraints) Menambahkan slratu komponen pada bagian akhir container ini.
void
add(Component comp, Object constraints, int index) Menambahkan suatu komponen pada container ini dengan suatu konstrain pada indeks yang telah ditentukan.
Component add(String name, Component comp)
Menambahkan suatu komponen pada container ini. void
addContainerlistener(ContainerListener l) Menambahkan suatu container listener untuk menerima eventevent dari container ini.
Estu Sinduningrum, ST, MT
METHOD-METHOD KELAS CONTAINER: Tipe Kembalian
Method Kelas Container
Protected void
addlmpl(Component comp, Object constraints, ini index)
Menambahkan suatu component cada container ini pada indeks yang telah ditentukan. void
addNotify() Membuat Container ini menjadi dapat ditampilkan (displayable) dengan menghubungkannya kepacla suatu native screen resource.
void
add PropertyChan geListene(PropertyChange Listener listener)
Menambahkan listener list. void
suatu
PropertyChangeListener
kepada
add Propety ChangeListener(String property Name, PropertyChangeListener listener)
Menambahkan suatu PropertyChangelistener pada listener list untuk propety tertentu.
Estu Sinduningrum, ST, MT
METHOD-METHOD KELAS CONTAINER: Tipe Kembalian
Method Kelas Container
void
applyComponentOrientation(ComponentOrientation o) Mengeset property ComponentOrieniation dari container ini dan semua komponen yang terkandung di dalamnya.
boolean
areFocusTraversalKeysSe(int id) Mengembalikan apakah set dari focus traversal keys untuk suatu operasi focus traversal yang diberikan telah secara eksplisit didefinisikan untuk container ini.
void
doLayout() Menyebabkan container ini unluk me-layout konponen komponennya.
Component findComponentAt(int x, int y)
Menemukan komponen visible child yang mengandung suatu posisi Component findComponentAt(Point p)
Menemukan visible child component yang berisi titik tertentu.
Estu Sinduningrum, ST, MT
Tipe Kembalian
METHOD-METHOD KELAS CONTAINER: Method Kelas Container
float
getAlignmentX() Mengembalikan alignment sepanjang sumbu x.
float
getAlignmentY() Mengembalikan alignment sepanjang sumbu y.
Component
getComponent(int n) Mengambil kornponen ke-n dalam container ini.
Component
getComponentAt(int x, int y) Menemukan komponen yang berisi posisi x.y.
Component
getComponentAt(Point p) Mengambil komponen yang berisi titik tertentu.
int Components[]
getComponentCount() Mengambil jumlah komponen dalam panel ini. getComponents() Mengambil semua komponen dalam container ini.
Estu Sinduningrum, ST, MT
METHOD-METHOD KELAS CONTAINER: Tipe
Method Kelas Container
Kembalian
Container
getContainerListeners()
Listener[]
Mengembalikan suatu array dari semua container listeners yang diregistrasi pada container ini.
Set
getFocusTraversalKeys(int id) Mengembalikan set dari focus traversal keys untuk suatu operasi traversal pada container ini.
Focus Traversal Policy
getFocusTraversalPolicy() Mcngembalikan focus traversal policy yang akan mengatur keyboard
traversal
dari
Container's
children
atau
mengembalikan null jika container bukanlah suatu focus cycle
root.
Estu Sinduningrum, ST, MT
METHOD-METHOD KELAS CONTAINER: Tipe Kembalian Insets
Method Kelas Container GetInsets() Menentukan inset container yang mengindikasikan ukuran border container.
LayoutManager
getLayout0 Mengambil layout manager bagi container ini.
EventListener[]
getListeners(Class listenerType) Mengembalikan suatu array dari semua objek yang sedang diregistrasi sebagai FooListeners berdasarkan container ini
Dimension
getMaximumSize() Mengembalikan ukuran maximum container ini.
Dimension
getPreferredSize() Mengembalikan preferred size container ini.
Void
Invalidate() Invalidates the container.
Estu Sinduningrum, ST, MT
METHOD-METHOD KELAS CONTAINER: Tipe Kembalian
Method Kelas Container
boolean
isAncestorOf (Component c) Memeriksa jika Checks komponen terkandung dalam hierarki komponerrcontainer ini
boolean
isFocusCycleRoot() Mengembalikan apakah container ini adalah root suatu focus traversal cycle.
boolean
isFocusCycleBoot(Containercontainer) Mengembalikan apakah suatu container merupakan focus cycle root dari iocus traversal cycle yang dimiliki oleh container ini.
boolean
isFocusTraversalPolicySet() Mengembalikan apakah focus traversal policy telah secara eksplisit diset untuk container ini.
void
list(PrintStream out, int indent) Mencetak suatu listing dari container ini ke suatu output stream yang telah ditentukan.
Estu Sinduningrum, ST, MT
METHOD-METHOD KELAS CONTAINER: Tipe Kembalian
Method Kelas Container
void
list(PrintWriter out, int indent) Mencetak suatu list, dimulai dari suatu indent, ke suatu print writer.
void
pain(Graphics g) Mengecat/mewarnai container.
protected String
paramString() Mengembalikan string yang merepresentasikan kondisi/state container ini.
void
print(Graphics g) Mencetak container.
void
printComponents(Graphics g) Mencetak (print) komponen-komponen dalam kontainer ini
protected void
processContainerEvent(ContainerEvent e) Memproses container event yang sedang terjadi pada container ini dengan mengirimkan mereka pada sembarang objek Container Listener yang telah diregistrasi.
Estu Sinduningrum, ST, MT
METHOD-METHOD KELAS CONTAINER: Tipe Kembalian protected void
Method Kelas Container processEvent(AWTEvent e) Memproses event-event pada container ini.
void
remove(Component comp) Menghapuskan suatu komponen dari container ini.
void
remove(int index) Menghapuskan suatu kcmponen, pada suatu indeks dari container ini.
void
removeAll() Menghapuskan semua komponen dari container ini.
void
removeContainerListene(ContainerListener l) Menghapuskan suatu container listener sehingga tidak lagi menerima container event dari container ini.
protected void
removeNotify() Membuat container ini menjadi tidak dapat ditampilkan (undisplayable) dengan memindahkan koneksinya ke native screen resource.
Estu Sinduningrum, ST, MT
METHOD-METHOD KELAS CONTAINER: Tipe Kembalian
Method Kelas Container
void
setFocusCycleRoot(boolean focusCycleRoot) Mengeset apakah container ini merupakan root dari suatu “focus traversal cycle”
void
setFocusTraversalKeys(int id, Set keystrokes) Mengeset “focus lraversal keys” untuk suatu operasi traversal dari container ini.
void
setFocusTraversalPolicy(FocusTraversalPolicy policy) Mengeset focus traversal policy yang akan mengatur keyboard traversal dari “Container's children”, jika container ini merupakan suatu “focus cycle root”.
void
setFont(Font f) Mengeset font container ini.
void
setlayout(LayoutManager mgr) Mengeset layout manager untuk container ini.
Estu Sinduningrum, ST, MT
METHOD-METHOD KELAS CONTAINER: Tipe Kembalian
Method Kelas Container
void
transferFocus Backward() Memindahkan focus ke komponen sebelumnya, seolah-olah komponen ini adalah focus owner.
void
transf erFocusDownCycle() Memindahkan focus ke bawah satu “focus traversal cycle".
void
update(Graphics g) Mengupdate container.
void
validate() Memvalidasi container ini dan semua subkomponennya
protected void
validateTree() Secara rekursif menurunkan container tree dan menghitung kembali layout untuk sembarang subtree yang ditandai memerlukannya (yang ditandai berarti invalid).
Estu Sinduningrum, ST, MT
KELAS WINDOW Kelas
window tidak dapat disisipkan pada
komponen
atau
kontainer
lainnya
karena
merupakan top level class. Kelas
ini jarang digunakan, namun memiliki
dua subkelas yang sering dipakai, yaitu kelas Dialog dan kelas Frame.
Estu Sinduningrum, ST, MT
KELAS WINDOW 1.
Ada tiga method peting dalam kelas ini. yaitu: void pack()
Method ini akan mengemas-meng-adjust layout management agar sesuai dengan ukuran subkomponen yang termuat di dalamnya.
2.
void show() Method ini akan membuat layout dan semua subkomponen yang termuat di dalamnya menjadi visible pada layar monitor dan sekaligus membawanya ke urutan paling muka dari semua aplikasi window yang sedang dijalankan.
Secara default, komponen-komponen yang sudah dibuat bersifat invisible, tidak tarnpak pada saat dijalankan. Anda juga bisa memakai method setVisible() untuk meng-enable-kannya, namun method ini tidak otomatis membawa komponen tersebut ke muka layar monitor.
Estu Sinduningrum, ST, MT
KELAS WINDOW 2.
void show() Secara default, komponen-komponen yang sudah dibuat bersifat
invisible, tidak tarnpak pada saat dijalankan. Anda juga bisa memakai method setVisible() untuk meng-enable-kannya, namun method ini tidak otomatis membawa komponen tersebut ke muka layar monitor. 3.
void dispose() Method ini dipanggil untuk "membebaskan" resource window,
setelah
Anda
selesai
menggunakan
komponen-komponennya.
Method ini tidak berarti menghapuskan objek window terscbut, namun
hanya
bersifat
"menutup"
kemungkinan
objek-objek
tersebut diakses kcmbali setelah operasi selesai dilakukan.
Estu Sinduningrum, ST, MT
KELAS FRAME
Seperti yang telah dijelaskan sebelumnya, kelas Frame merupakan subkelas dari kelas window.
Frame
dapat
diubah
ukurannya
(resize),
dapat
digerakkan, dan dapat memiliki title bar, icon, dan
menu.
Konstruktor:
Frame(); Frame(String Title);
Estu Sinduningrum, ST, MT
KELAS FRAME
Langkah-langkah bekerja dengan Frame adalah sebagai berikut:
1.
Membuat objek Frame.
Frame frm = new Frame("FrameTest");
2.
Menambahkan komffien atau panel.
frm.add(new Button("Test");
3.
Mengeset ukuran frame.
4. 5.
Frm.setSize( 150, 250);
Memanggil method pack. frm.pack(); Membuat komponen tersebut merrjadi visible. frm.setVisible(true);
Estu Sinduningrum, ST, MT
KELAS PANEL
Meskipun Frame merupakan kontainer yang sering digunakan
untuk
menempatkan
komponen
secara
langsung, naun dalam pengorganisasian tata letak komponen
(layout),
ada
baiknya
Anda
mengemas
komponen-komponen tersebut ke dalarn panel terlebih dahulu.
Selanjutnya,
menambahkan ke frame
panel-panel
tersebut
Anda
Estu Sinduningrum, ST, MT
SKENARIO LAYOUT MENGGUNAKAN FRAME DAN PANEL
Estu Sinduningrum, ST, MT
KELAS DIALOG
Dialog juga merupakan subkelas dari sama seperti Frame, yaitu dapat di-resize dan bisa menambahkan icon atau menu bar.
Konstruktor: Dialog( Frame parent); Dialog(Frame parent, boolean modal); Dialog(Frame parent, String title); Dialog(Frame parent, String title,boolean modal);
Estu Sinduningrum, ST, MT
KOMPONEN KONTROL GUI
Komponen GUI dalam Java dapat dibagi ke dalam dua kelas besar, yaitu Kelas Component dan Kelas MenuComponent.
Kelas Component terdiri dari beberapa komponen kontrol GUI, seperti Button, CheckBox, Choice, TextField, dan lainlain.
Komponen kontrol ini digunakan sebagai user interface yang akan ditaruh dalam suatu kontainer.
Kelas Menu Component terdiri dari komponen kontrol yang digunakan untuk membuat menu.
Estu Sinduningrum, ST, MT
KOMPONEN KONTROL GUI
Langkah-langkah bekerja dengan komponen-komponen tersebut adalah:
1.
Membuat objek dari kelas komponen dengan memanggil konstruktornya.
2. 3.
Button btn = new Button('‘test"); Memuat komponen tersebut ke dalam kontainer. frm.add(btn); Memproses event yang ditrigger oleh user terhadap komponen tersebut. Anda harus menambahkan interface event listener pada listing komponen tersebut untuk membacamendeteksi event, sedangkan untuk memprosesnya dibutuhkan event handler.
Estu Sinduningrum, ST, MT
KELAS COMPONENT
Kelas ini rnerupakan basis dari kelas-kelas komponen lainnya.
Konstruktor:
Konstanta :
Component()
1.
static float BOTTOM_ALIGNMENT
2.
static float CENTER_ALIGNMENT
3.
static float LEFT_ALIGNMENT
4.
static float RIGHT_ALIGNMENT
5.
static float TOP_ALIGNMENT
Estu Sinduningrum, ST, MT
METHOD KELAS COMPONENT: Tipe Kembalian
Method Kelas Component
void
add(PopupMenupopup)
void
addComponentListener(ComponentListener)
void
addFocusListener(FocusListener)
void
addHierarchyBoundsListener(HierarchyBounds Listener )
void
addHierarchyListener(HierarchyListener )
void
addInputMethodListener(inputMethodListener )
void
addKeyListener(KeyListener)
void
addMouseListener(MouseListener)
void
addMouseMotionListener(MouseMotionListener )
void
addMouseWheelListener(MouseWheelListener )
void
addNotify()
void
addPropertyChangeListener(PropertyChangeListener listener)
Estu Sinduningrum, ST, MT
METHOD KELAS COMPONENT: Tipe Kembalian
Method Kelas Component
void
addPropertyChangeListene(String propertyName, PropertyChangeListener listener)
void
applyComponentOrientation(ComponentOrientation orientation)
boolean
areFocusTraversalKeysSet(int id)
int
checklmage(Image image, ImageObserver observer)
int
checkImageIlmage image, int width, int height, ImageObserver observer)
Protected AWTEvent
coalesceEvents(AWTEvent existing Event, AWTEvent newEvent)
boolean
contains(int x, int y)
boolean
contains(Point p)
Image
createImage(ImageProducer producer)
Image
createImage(int width, int height)
Estu Sinduningrum, ST, MT
METHOD KELAS COMPONENT: Tipe Kembalian
Method Kelas Component
VolatileImage
createVolatileImage(int width, int height)
VolatileImage
createVolatileImage(int width int height, ImageCapabilities caps)
Protected void
disableEvents(long eventsToDisable)
void
dispatchEvent(AWTEvent e)
void
doLayout()
Protected void
enableEvents(long eventsToEnable)
void
enableInputMethods (boolean enable)
Protected void
firePropertyChange(String propertyName, boolean oldValue, boolean newValue)
Protected void
firePropertyChange(String propertyNsame, int oldValue, int newValue)
Protected void
f ireProperty Change(String propertyName, Object oldValue, Object newValue)
Estu Sinduningrum, ST, MT
METHOD KELAS COMPONENT: Tipe Kembalian
Method Kelas Component
Accessible Context
getAccessibleContext()
float
getAlignmentX()
float
getAlignmentY()
Color
getBackground()
Rectangle
getBounds()
Rectangle
getBounds(Rectangle rv)
ColorModel
getColorModel()
Component
getComponentAt(int x, int y)
Component
getComponentAt(Point p)
Component Listener[ ]
getComponentListeners()
Estu Sinduningrum, ST, MT
METHOD KELAS COMPONENT: Tipe Kembalian
Method Kelas Component
Component Orientation
getComponentOrientation()
Cursor
getCursor()
DropTarget
getDropTarget()
Container
getFocusCycleRootAncestor()
FocusListener[]
getFocusListeners()
Set
getFocusTraversalKeys(int id)
boolean
getFocusTraversalKeysEnabled()
Font
getFont()
FontMetrics
getFontMetrics(Font font)
Color
getForeground()
Graphics
getGraphics()
Graphics Configuration
getGraphicsConfiguration()
Estu Sinduningrum, ST, MT
METHOD KELAS COMPONENT: Tipe Kembalian
Method Kelas Component
int
getHeight()
Hierarchy Bounds Listener[]
getHierarchyBoundsListeners()
HierarchyListener[]
getHierarchyListeners()
boolean
getIgnoreRepaint()
InputContext
getlnputContext()
InputMethod Listener[]
getInputMethodListeners()
InputMethod Requests
getInputMethodRequests()
KeyListener[]
getKeyListeners()
EventListener[]
getListeners(Class listenerType)
Locale
getLocale()
Estu Sinduningrum, ST, MT
METHOD KELAS COMPONENT: Tipe Kembalian
Method Kelas Component
Point
getLocation()
Point
getLocation(Point rv)
Point
GetLocationOnScreen()
Dimension
getMaximumSize()
Dimension
getMinimumSize()
MouseListener[]
getMouseListeners()
MouseMotion Listener[]
getMouseMotionListeners()
MouseWheel Listener[]
getMouseWheelListeners()
String
getName()
Container
getParent()
Dimension
getPreferredSize()
Estu Sinduningrum, ST, MT
METHOD KELAS COMPONENT: Tipe Kembalian
Method Kelas Component
Property Change Listener[]
getPropertyChangeListeners()
Property Change Listener[]
getPropertyChangeListeners(String properlyName)
Dimension
getSize()
Dimension
getSize(Dimension rv)
Toolkit
getToolkit()
Object
getTreeLock()
int
getWidth()
int
setX()
int
setY()
boolean
hasFocus()
boolean
imageUpdate(Image img, int infoflags, int x, int y, int w, int h)
Estu Sinduningrum, ST, MT
METHOD KELAS COMPONENT: Tipe Kembalian
Method Kelas Component
void
invalidate()
boolean
isBackgroundSet()
boolean
isCursorSet()
boolean
isDisplayable()
boolean
isDoubleBuff ered()
boolean
isEnabled()
boolean
isFocusable()
boolean
isFocusCycleRoot(Container container)
boolean
isFocusOwner()
boolean
isFontSet()
boolean
isForegroundSet()
boolean
isFocusOwner()
boolean
isFontSet()
boolean
isForegroundSet()
Estu Sinduningrum, ST, MT
METHOD KELAS COMPONENT: Tipe Kembalian
Method Kelas Component
boolean
isLightweight()
boolean
isOpaque()
boolean
isShowing()
boolean
isValid()
void
isVisible()
void
list()
void
list(PrintStream out)
void
list(PrintStream out, int indent)
void
list(PrintWriter out)
void
list(PrintWriter out, int indent)
void
paint(Graphics g)
void
paintAll(Graphics g)
protected String
paramString()
Estu Sinduningrum, ST, MT
METHOD KELAS COMPONENT: Tipe Kembalian
Method Kelas Component
boolean
prepareImage(Image image, int width, int height, ImageObserver observer)
void
print(Graphics g)
void
printAll(Graphics g)
protected void
processComponentEvent(ComponentEvent e)
protected void
processEvent(AWT Event e)
protected void
processFocusEvent(Focus Event e)
protected void
processHierarchyBounds Event(HierarchyEvent e)
protected void
processHierarchyEvent(HierarchyEvent e)
protected void
processInputMethodEvent(lnputMethod Event e)
protected void
processKeyEvent(KeyEvent e)
protected void
processMouseEvent(MouseEvent e)
protected void
processMouseMotionEvent(MouseEvent e)
protected void
processMouseWheelEvent(MouseWheelEvent e)
Estu Sinduningrum, ST, MT
METHOD KELAS COMPONENT: Tipe Kembalian
Method Kelas Component
void
remove(MenuComponent popup)
void
removeComponentListener(Componentlistener l)
void
removeFocusListener(FocusListener l)
void
removeHierarchyBoundsListener(HierarchyBounds Listener l)
void
removeHierarchyListener(HierarchyListener l)
void
removeInputMethodListener(InputMethodListener l)
void
removeKeyListener(KeyListener l)
void
removeMouseListener(MouseListener l)
void
removeMouseMotionListener(MouseMotionListener l)
void
removeMouseWheelListener(MouseWneelListener l)
void
removeNotify()
void
removePropertyChangeListener(PropetvChan ge Listener listener)
Estu Sinduningrum, ST, MT
METHOD KELAS COMPONENT: Tipe Kembalian
Method Kelas Component
void
removePropertyChangeListener(String propertyNamePropertyChangeListener listener)
void
repaint()
void
repaint(int x, int y, int width, int height)
void
repaint(long tm)
void
repaint(long tm. int x, int y, int width, int height)
void
requestFocus()
protected boolean
requestFocus(boolean temporary)
boolean
requestFocuslnWindow()
protected boolean
requestFocuslnWindow(boolean temporary)
void
setBackground(Color c)
void
setBoundg(int x, int y, int width, int height)
void
setBounds(Rectangle r)
void
setComponentOrientation(ComponentOrientation o)
Estu Sinduningrum, ST, MT
METHOD KELAS COMPONENT: Tipe Kembalian
Method Kelas Component
void
setCursor(Cursor cursor)
void
setDropTarget(DropTarget dt)
void
setEnabled(boolean b)
void
setFocusable(boolean focusable)
void
setFocusTraversalKeys(int id, Set keystrokes)
void
setFocusTraversalKeysEnabled(boolean focusTraversalKeys Enabled)
void
setFont(Font f)
void
setForeground(Color c)
void
setIgnoreRepaint(boolean ignoreRepaint)
void
setLocale(Locale l)
void
setLocation(int x, int y)
void
setName(String name)
Estu Sinduningrum, ST, MT
METHOD KELAS COMPONENT: Tipe Kembalian
Method Kelas Component
void
setSize(Dimension d)
void
setSize(int width, int height)
void
setVisible(boolean b)
void
toString()
void
tansferFocus()
void
transferFocusBackward()
void
transferFocusUpCycle()
void
update(Graphics g)
void
validate()
Estu Sinduningrum, ST, MT
METHOD KELAS COMPONENT:
Konstruktor: Button( ) Button(String Label)
Method yang dapat digunakan untuk mengeset label adalah:
String getLabel( )
void setLabel(String label)
Estu Sinduningrum, ST, MT
METHOD KELAS BUTTON: Tipe Kembalian
Deskripsi Kelas Button
void
addAction Listene(ActionListener l) Menambahkan action listener untuk mendeteksi action event yang berasal dari button ini
void
addNotify() Menciptakan “peer” dari button ini.
Accessible Context
getAccessibleContext() Mengambil AccessibleContext yang diasosiasikan dengan button ini.
String
getActionCommand() Mengembalikan nama command dari action event yang ditrigger oleh button ini.
ActionListener
getActionListener() Mengembalikan array dari action listener yang didaftarkan (diregistrasi) untuk button ini.
String
getLabel() Mengambil label dari button ini.
Estu Sinduningrum, ST, MT
METHOD KELAS BUTTON: Tipe Kembalian
Deskripsi Kelas Button
EventListener[]
getListeners(Class listenerType) Mengembalikan array dari semua objek yang sedang didaftarkan (diregistrasi) sebagal FooListeners pada Button ini.
protected String
paramString() Mengembalikan string yang merepresentasikan keadaan (state) dari Button ini.
protected void
processAction Event(Action Event e) Memproses action event-action event yang terjadi pada button ini dengan mengirimkan mereka kepada sembarang objek ActionListener yang telah terdaftar.
protected void
processEvent(AWTEvent e) Memproses event-event pada button ini.
void
removeActionListener(ActionListener I) Menghapuskan action listener tertentu, sehingga tidak lagi menerima action event dari buttor ini.
Estu Sinduningrum, ST, MT
METHOD KELAS BUTTON: Tipe Kembalian
Deskripsi Kelas Button
void
setActionCommand(String command) Mengeset nama command untuk action event yang ditriger oleh button ini.
void
setlabel(Stringlabel)
Mengeset label bulton dengan suatu string.
LATIHAN 78
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(); } }
Estu Sinduningrum, ST, MT
LATIHAN 79
import java.awt.*; public class TesButton2 extends Frame { int lebar = 300; int tinggi= 100; public static void main(String[] args) { TesButton2 apl = new TesButton2(); } public TesButton2() { super("Tes Button"); setSize(lebar, tinggi); Panel panelTombol = new Panel(); panelTombol.add(new Button("Perbesar")); panelTombol.add(new Button("Selesai")); add("South", panelTombol); show(); }
public boolean handleEvent(Event kejadian) { switch (kejadian.id) { case Event.WINDOW_DESTROY: System.exit(0); return true; case Event.ACTION_EVENT: if (kejadian.target instanceof Button) { if ("Perbesar".equals(kejadian.arg)) { lebar += 20; tinggi += 10; setSize(lebar, tinggi); } else if ("Selesai".equals(kejadian.arg)) { System.exit(0); return true; } } } return false; } } Estu Sinduningrum, ST, MT
LATIHAN 80
import java.awt.*; import java.awt.event.*; public class TesButton3 extends Frame { int lebar = 300; int tinggi= 100; public static void main(String[] args) { TesButton3 apl = new TesButton3(); public TesButton3() { super("Tes Button"); setSize(lebar, tinggi); Button tombolPerbesar = new Button("Perbesar"); Button tombolSelesai = new Button("Selesai"); Panel panelTombol = new Panel(); panelTombol.add(tombolPerbesar); panelTombol.add(tombolSelesai); add("South", panelTombol); // --- Penanganan kejadian tombolPerbesar.addActionListener( new TesButton3.PenanganTombol()); tombolSelesai.addActionListener( new TesButton3.PenanganTombol());
addWindowListener( new TesButton3.PenanganKejadian()); // --- Tampilkan frame show(); } }
class PenanganKejadian extends WindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); } } class PenanganTombol implements ActionListener { public void actionPerformed(ActionEvent e ) { String s = e.getActionCommand(); if (s.equals("Perbesar")) { lebar += 20; tinggi += 10; setSize(lebar, tinggi); } else if (s.equals("Selesai")) { System.exit(0); } } } } Estu Sinduningrum, ST, MT
LATIHAN 81
import java.awt.*; import java.awt.event.*; public class TesCheckBox extends Frame { Checkbox cb1, cb2, cb3; TextArea tArea; public static void main(String[] args) { TesCheckBox apl = new TesCheckBox(); } public TesCheckBox() { super("Tes Checkbox"); setSize(400, 120); cb1 = new Checkbox("Java"); cb2 = new Checkbox("C++"); cb3 = new Checkbox("PHP"); tArea = new TextArea("",3, 35, TextArea.SCROLLBARS_NONE); tArea.setEditable(false);
Panel p1 = new Panel(); p1.setLayout(new GridLayout(3,1)); p1.add(cb1); p1.add(cb2); p1.add(cb3); Panel p2 = new Panel(); p2.add(tArea); add("West", p1); add("East", p2); cb1.addItemListener( new TesCheckBox.PenanganItem()); cb2.addItemListener( new TesCheckBox.PenanganItem()); cb3.addItemListener( new TesCheckBox.PenanganItem()); Estu Sinduningrum, ST, MT
Estu Sinduningrum, ST, MT
// --- Tampilkan frame show(); } public void tampilkanInfo() { String sCB1, sCB2, sCB3; sCB1 = "Status Java: " + cb1.getState(); sCB2 = "Status C++: " + cb2.getState(); sCB3 = "Status PHP: " + cb3.getState(); tArea.setText(sCB1 + "\n" + sCB2 + "\n" + sCB3); } class PenanganItem implements ItemListener { public void itemStateChanged(ItemEvent e ) { Object o = e.getItem(); if (o.equals("Java")) { tampilkanInfo(); } else if (o.equals("C++")) { tampilkanInfo(); } else if (o.equals("PHP")) { tampilkanInfo(); } } }}
TERIMA KASIH