ABSTRAK,
DAN INTERFACE
14th weekK
ELAS
I
NNER
(I
NNER
C
LASS
)
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.
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.
Beberapa Ketentuan Inner Class adalah sebagai berikut:
1. 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.
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.).
K
ETENTUAN
I
NNER
C
LASS
KelasTerluar a = new KelasTerluar0;
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 maupun method
nonstatic dari Kelas Terluarnya.
/**
*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); }
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(); } }
M
ENGGUNAKAN
I
NNER
C
LASS
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 user
berinteraksi dengan komponen-komponen GUI
*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 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"); } } }
K
ELAS
A
BSTRAK
(A
BSTRACT
C
LASS
)
Kelas Abstrak (Abstract class) adalah kelas yang
terletak pada posisi tertinggi dari hierarki kelas.
Kelas ini digunakan sebagai basis bagi penurunan
kelas-kelas 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.
Bentuk Umum :
K
ELAS
A
BSTRAK
(A
BSTRACT
C
LASS
)
Kelas Abstrak
Adalah kelas yang terletak pada posisi tertinggi dari hierarki
kelas dari menjadi basis untuk mcnurunkan kelas-kelas lainnya.
(Modifier tambahan) abstract class NamaKelasAbstract{
Variabel umum dan Deskripsi method tanpa Implentasi;
}
I
LUSTRASI
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).
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, apabila Anda mengacu kepada struktur
organisasi perusahaan, maka kelas pekerja ini dapat
dipandang sebagai suatu kelas abstrak bagi kelas-kelas yang
diturunkan darinya, seperti Kelas Direktur, Kelas Manajer,
Kelas Staff, Kelas Buruh, dan seterusnya
I
NTERFACE
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).
Interface dideklarasi kan sebagai berikut:
D
EKLARASI
I
NTERFACE
Interface adalah kumpulan struktur method, tanpa detail
method yang hanya memuat deklarasi dan implementasinya
Modifier interface namaInterface {
/* *Deklarasi konstanta*/
/**Signature method*/
*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
M
ENGAPA
B
UTUH
I
NTERFACE
?
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) masih belum cukup untuk
memecahkan masalah?
M
EMECAHKAN
B
AGIAN
YANG
R
UMIT
DAN
S
PESIFIK
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.
Berikut ini dua pilihan untuk memecahkan masalah.
1.
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.
M
EMECAHKAN
B
AGIAN
YANG
R
UMIT
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)
M
EMECAHKAN
B
AGIAN
YANG
R
UMIT
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.
M
EMECAHKAN
B
AGIAN
YANG
R
UMIT
K
ETERBATASAN
I
NHERITANCE
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.
K
ETERBATASAN
I
NHERITANCE
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.
Dalam prinsip pewarisan (inheritance), kelas turunan
(subclass) hanya boleh diturunkan dari satu kelas induk (kelas
super).
Kembali ke persoalan semula, bagaimana bila Anda
ingin memiliki kelas yang di dalamnya terdapat
method-method 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
K
ETERBATASAN
I
NHERITANCE
Interface merupakan solusi atas prinsip pewarisan lebih dari
satu (multiple inheritance). Dengan interface, suatu objek
dapat memiliki behavior yang berasal dari beberapa referensi.
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
terpingkal-pingkal 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.
A
PAKAH
I
NTERFACE
= K
ELAS
A
BSTRAK
?
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 interface, ia tidak dapat
diinstansiasi menjadi objek.
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.
adalah:
1 Tipe data/ Variabel Kelas Abstrak :
Interface : semua tipe data. hanya boleh berupa konstanta. 2 Method
Kelas Abstrak : Interface :
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.
3 Sintaks Method Kelas Abstrak:
Interface :
Semua method yang didelarasikan di dalam kelas abstrak harus dibubuhi modifier abstract.
Tidak perlu membubuhkan modifier
1 Defisi
Kelas : Interface :
Pemodelan dari objek.
kumpulan method yang hanya diterapkan pada aplikasi tertentu.
2 Kandungan informasi
Kelas : Interface :
Mendefinisikan variabel dan method secara detail dan konkret.
hanya mendefinisikan signature dari method, selanjutnya programerlah yang menentukan detail method.
3 Instansiasi Kelas : Interface :
Bisa diinstansiasi menjadi objek.
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
M
ENGAPLIKASIKAN
I
NTERFACE
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.
*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(); } Estu Sinduningrum, ST, MT
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");
(ABSTRACT WINDOWING
TOOLKIT)
P
EMROGRAMAN
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.
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).
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.
K
OMPONEN
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.
K
ELAS
C
OMPONENT
DAN
S
UBKELASNYA
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.
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 yang hanya dapat dibaca, tidak dapat dimodifikasi.
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.
K
ELAS
C
OMPONENT
DAN
S
UBKELASNYA
K
ONTAINER
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.
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.
K
ELAS
C
ONTAINER
Kelas Container lebih sering digunakan dalam
merancang
tata
letak
komponen
GUI
layout
Management).
Konstruktor:
M
ETHOD
-
METHOD
K
ELAS
C
ONTAINER
:
TipeKembalian
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 event- event dari container ini.
M
ETHOD
-
METHOD
K
ELAS
C
ONTAINER
:
TipeKembalian
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 suatu PropertyChangeListener kepada listener list.
void add Propety ChangeListener(String property Name, PropertyChangeListener listener)
Menambahkan suatu PropertyChangelistener pada listener list untuk propety tertentu.
M
ETHOD
-
METHOD
K
ELAS
C
ONTAINER
:
TipeKembalian
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)
K
ELAS
C
ONTAINER
:
Tipe Kembalian 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 getComponentCount()
Mengambil jumlah komponen dalam panel ini.
Components[] getComponents()
M
ETHOD
-
METHOD
K
ELAS
C
ONTAINER
:
TipeKembalian
Method Kelas Container
Container Listener[]
getContainerListeners()
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.
M
ETHOD
-
METHOD
K
ELAS
C
ONTAINER
:
Tipe Kembalian Method Kelas ContainerInsets 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()
M
ETHOD
-
METHOD
K
ELAS
C
ONTAINER
:
Tipe Kembalian Method Kelas Containerboolean 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.
M
ETHOD
-
METHOD
K
ELAS
C
ONTAINER
:
TipeKembalian
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.
M
ETHOD
-
METHOD
K
ELAS
C
ONTAINER
:
TipeKembalian
Method Kelas Container
protected void 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.
M
ETHOD
-
METHOD
K
ELAS
C
ONTAINER
:
TipeKembalian
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)
M
ETHOD
-
METHOD
K
ELAS
C
ONTAINER
:
TipeKembalian
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
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.
Ada tiga method peting dalam kelas ini. yaitu:
1. 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.
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.
K
ELAS
F
RAME
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();
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.
Frm.setSize( 150, 250);
4.
Memanggil method pack.
frm.pack();
5.
Membuat komponen tersebut merrjadi visible.
frm.setVisible(true);
K
ELAS
P
ANEL
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, panel-panel tersebut Anda
menambahkan ke frame
K
ELAS
D
IALOG
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);
K
OMPONEN
K
ONTROL
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
lain-lain.
Komponen kontrol ini digunakan sebagai user interface yang
akan ditaruh dalam suatu kontainer.
Kelas Menu Component terdiri dari komponen kontrol yang
Langkah-langkah bekerja dengan komponen-komponen tersebut
adalah:
1.
Membuat objek dari kelas komponen dengan memanggil
konstruktornya.
Button btn = new Button('‘test");
2.
Memuat komponen tersebut ke dalam kontainer.
frm.add(btn);
3.
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.
K
ELAS
C
OMPONENT
Kelas ini rnerupakan basis dari kelas-kelas komponen
lainnya.
Konstruktor:
Konstanta :
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
M
ETHOD
K
ELAS
C
OMPONENT
:
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)
M
ETHOD
K
ELAS
C
OMPONENT
:
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)
M
ETHOD
K
ELAS
C
OMPONENT
:
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)
M
ETHOD
K
ELAS
C
OMPONENT
:
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
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()
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()
M
ETHOD
K
ELAS
C
OMPONENT
:
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()
M
ETHOD
K
ELAS
C
OMPONENT
:
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)
M
ETHOD
K
ELAS
C
OMPONENT
:
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()
M
ETHOD
K
ELAS
C
OMPONENT
:
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)
M
ETHOD
K
ELAS
C
OMPONENT
:
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)
M
ETHOD
K
ELAS
C
OMPONENT
:
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)
M
ETHOD
K
ELAS
C
OMPONENT
:
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)
M
ETHOD
K
ELAS
C
OMPONENT
:
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)
M
ETHOD
K
ELAS
C
OMPONENT
:
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()
Konstruktor:
Method yang dapat digunakan untuk mengeset label
adalah:
String getLabel( )
void setLabel(String label)
Button( )
Button(String Label)
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.
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.
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.
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
Estu Sinduningrum, ST, MT
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(); } 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
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()); 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
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); 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());
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(); } } } }