• Tidak ada hasil yang ditemukan

KELAS INNER, KELAS ABSTRAK, DAN INTERFACE. 14 th week Estu Sinduningrum ST,MT

N/A
N/A
Protected

Academic year: 2021

Membagikan "KELAS INNER, KELAS ABSTRAK, DAN INTERFACE. 14 th week Estu Sinduningrum ST,MT"

Copied!
100
0
0

Teks penuh

(1)

ABSTRAK,

DAN INTERFACE

14th week

(2)

K

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.

(3)

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.

(4)

 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.

(5)
(6)

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;

(7)

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.

(8)
(9)

/**

*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() {

(10)

/** 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(); } }

(11)

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

(12)
(13)

*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"); } } }

(14)

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.

(15)

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;

}

(16)

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).

(17)

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

(18)

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).

(19)

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*/

(20)
(21)

*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

(22)

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?

(23)

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.

(24)

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

(25)

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

(26)

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

(27)

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.

(28)

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).

(29)

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.

(30)

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.

(31)

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.

(32)

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.

(33)

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

(34)

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.

(35)

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

(36)

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.

(37)
(38)

*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");

(39)

(ABSTRACT WINDOWING

TOOLKIT)

(40)

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.

(41)

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).

(42)

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.

(43)

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.

(44)

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.

(45)

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.

(46)

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

(47)

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.

(48)

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.

(49)

K

ELAS

C

ONTAINER

Kelas Container lebih sering digunakan dalam

merancang

tata

letak

komponen

GUI

layout

Management).

Konstruktor:

(50)

M

ETHOD

-

METHOD

K

ELAS

C

ONTAINER

:

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 event- event dari container ini.

(51)

M

ETHOD

-

METHOD

K

ELAS

C

ONTAINER

:

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 suatu PropertyChangeListener kepada listener list.

void add Propety ChangeListener(String property Name, PropertyChangeListener listener)

Menambahkan suatu PropertyChangelistener pada listener list untuk propety tertentu.

(52)

M

ETHOD

-

METHOD

K

ELAS

C

ONTAINER

:

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)

(53)

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()

(54)

M

ETHOD

-

METHOD

K

ELAS

C

ONTAINER

:

Tipe

Kembalian

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.

(55)

M

ETHOD

-

METHOD

K

ELAS

C

ONTAINER

:

Tipe Kembalian Method Kelas Container

Insets 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()

(56)

M

ETHOD

-

METHOD

K

ELAS

C

ONTAINER

:

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.

(57)

M

ETHOD

-

METHOD

K

ELAS

C

ONTAINER

:

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.

(58)

M

ETHOD

-

METHOD

K

ELAS

C

ONTAINER

:

Tipe

Kembalian

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.

(59)

M

ETHOD

-

METHOD

K

ELAS

C

ONTAINER

:

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)

(60)

M

ETHOD

-

METHOD

K

ELAS

C

ONTAINER

:

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

(61)

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.

(62)

 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.

(63)

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.

(64)

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();

(65)

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);

(66)

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

(67)
(68)

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);

(69)

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

(70)

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.

(71)

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

(72)

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)

(73)

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)

(74)

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)

(75)

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

(76)

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()

(77)

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()

(78)

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()

(79)

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)

(80)

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()

(81)

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)

(82)

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)

(83)

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)

(84)

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)

(85)

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)

(86)

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()

(87)

Konstruktor:

Method yang dapat digunakan untuk mengeset label

adalah:

String getLabel( )

void setLabel(String label)

Button( )

Button(String Label)

(88)

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.

(89)

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.

(90)

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.

(91)
(92)

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

(93)
(94)

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; } }

(95)
(96)

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); } } } }

(97)
(98)

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());

(99)

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(); } } } }

(100)

Referensi

Dokumen terkait

Dalam telur itik, protein lebih banyak terdapat pada bagian kuning telur (17%), sedangkan bagian putihnya terdiri atas ovalbumin (putih telur) dan... Protein telur

Teraba tumor ataupun KGB dengan diameter 5 cm atau lebih dan tidak ada metastasis jauh.. Tumor dengan infiltrasi langsung kejaringan sekitarnya dan tidak ada

Urutan proses object diagram adalah pada Sistem Informasi Geografis Pemetaan Rumah Makan di Kabupaten Tanah Laut memiliki banyak mengelola di antaranya mengelola admin,

Hasil penelitian menunjukan bahwa: 1) Analisis deskriptif data variabel X menunjukkan nilai Mean = 61,030, dengan frekuensi tertinggi skor nilai variabel X yakni 24 = 73% berada

Untuk mengetahui besarnya pengaruh ukuran perusahaan, profitabilitas, solvabilitas, opini audit secara parsial terhadap audit delay pada perusahaan pertambangan

Hasil penelitian yang diperoleh dalam penelitian ini adalah: (1) penyelenggaraan pemberdayaan keluarga melalui KUBE Srikandi yang meliputi: (a) tahap perencanaan

New World Rubber Factory telah menerapkan Peraturan Pemerintah Nomor 46 Tahun 2013 tentang Pajak Penghasilan Atas Penghasilan Dari Usaha Yang Diterima Atau

(3) Dalam hal Penghasil, Pengumpul, Pemanfaat, Pengangkut, Pengolah, dan Penimbun limbah B3 tidak melakukan penanggulangan pencemaran dan/atau kerusakan lingkungan