0% found this document useful (0 votes)
50 views5 pages

Praktikum 9 Inner Class Dan Layout

This document discusses several Java GUI programming examples using AWT components and layout managers: 1. It compares named and anonymous inner classes as event listeners, and provides examples modifying existing programs to use both approaches. 2. It provides an example to modify an existing GridBagLayout program to display buttons of different sizes and colors. 3. It describes a program using FlowLayout and checkboxes to change the layout alignment. 4. It outlines a program using multiple panels and layouts including BorderLayout, GridLayout, and FlowLayout. 5. It provides an example to select and display different font styles using a list, buttons, and labels.

Uploaded by

hanif sabili
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
50 views5 pages

Praktikum 9 Inner Class Dan Layout

This document discusses several Java GUI programming examples using AWT components and layout managers: 1. It compares named and anonymous inner classes as event listeners, and provides examples modifying existing programs to use both approaches. 2. It provides an example to modify an existing GridBagLayout program to display buttons of different sizes and colors. 3. It describes a program using FlowLayout and checkboxes to change the layout alignment. 4. It outlines a program using multiple panels and layouts including BorderLayout, GridLayout, and FlowLayout. 5. It provides an example to select and display different font styles using a list, buttons, and labels.

Uploaded by

hanif sabili
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

Praktikum 9

Inner Class dan Layout

1. Inner Class Bernama (named) dan Anonymous Inner Class


Pelajari dan bandingkan AWTCounter.java dengan program berikut
AWTCounterNamedInnerClass1.java dan AWTCounterAnonymousInnerClass1.java yang
menggunakan "named inner classes" dan "anonymous inner classes", sebagai ActionEvent
listener dari pada menggunakan object "this".
import java.awt.*;
import java.awt.event.*;
public class AWTCounterNamedInnerClass1 extends Frame {
private TextField tfCount;
private int count = 0;
public AWTCounterNamedInnerClass1 () {
setLayout(new FlowLayout());
add(new Label("Counter")); // anonymous Label
tfCount = new TextField(count + "", 10);
tfCount.setEditable(false); // read-only
add(tfCount);

Button btnCount = new Button("Count");


add(btnCount);
// buat anonymous instance dari inner class BtnListener sbg
// listener ke source btnCount
btnCount.addActionListener(new BtnListener());
setSize(250, 100);
setTitle("AWT Counter");
setVisible(true);
}
public static void main(String[] args) {
new AWTCounterNamedInnerClass1();
}
// Named inner class yang dipakai sebagai listener dari ActionEvent
// inner class dapat meng-access private variabel dari outer class
private class BtnListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
++count;
tfCount.setText(count + "");
}
}
}

import java.awt.*;
import java.awt.event.*;
public class AWTCounterAnonymousInnerClass1 extends Frame {
// Class ini BUKAN listener, dia tidak meng-implement ActionListener
private TextField tfCount;
private int count = 0;
public AWTCounterAnonymousInnerClass1 () {
setLayout(new FlowLayout());
add(new Label("Counter")); // anonymous Label
tfCount = new TextField(count + "", 10);
tfCount.setEditable(false); // read-only
add(tfCount);
Button btnCount = new Button("Count");
add(btnCount);
// buat anonymous instance dari anonymous class sbg
// listener ke source btnCount
btnCount.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
++count;
tfCount.setText(count + "");
}
});

setSize(250, 100);
setTitle("AWT Counter");
setVisible(true);
}

public static void main(String[] args) {


new AWTCounterAnonymousInnerClass1();
}
}

a. Modifikasi 3 program yang sudah di buat praktikum sebelumnya (AWTAccumulator,


AWTCountDown, AWTFactorial) dengan menggunakan (i) named inner class; (ii)
anonymous inner class sebagai ActionEvent listener. Sehingga file yang harus anda buat
totalnya ada 6 class yaitu :
- AWTAccumulatorAnonymousInnerClass dan AWTAccumulatorNamedInnerClass
- AWTCountDownAnonymousInnerClass dan AWTCountDownNamedInnerClass
- AWTFactorialAnonymousInnerClass dan AWTFactorialNamedInnerClass
b. Modifikasi AWTCount untuk menyertakan 2 tambahan button untuk menghitung turun (count
down) dan me-reset nilai count. Gunakan (i) "this" class sebagai listener untuk semua 3
button (AWTCounter3Buttons.java); (ii) Gunakan satu inner class bernama sebagai
listener untuk ke-3 buttons (AWTCounter3ButtonsAnonymousInnerClass.java); (iii)
Gunakan anonymous inner class sebagai listener untuk tiap button
(AWTCounter3ButtonsNamedInnerClass.java). Sehingga file yang anda buat ada 3 class.
Petunjuk untuk (i) dan (ii): Anda dapat memakai event.getActionCommend() untuk
memanggil label pada button yang di picu oleh event.
@Override
public void actionPerformed(ActionEvent e) {
String btnLabel = e.getActionCommand();
// event.getActionCommand() return label button
if (btnLabel.equals("CountUp")) {
......
} else if (btnLabel.equals("CountDown")) {
......
} else {
......
}
......
}

2. Buatlah modifikasi dari contoh pada diktat bab 9, GridBagLayoutDemo.java


menjadi GridBagLayoutDemo1.java, sehingga menjadi seperti gambar di bawah ini.
Dua variable masih sama gb1 dan colors, satu konstruktor memanggil method
setup_layout(), menyetel ukuran (250,100), menambahkan WindowListener, dan
menyetel visible frame. Method setup_layout() melakukan penyetelan layout ke gb1,
lalu membuat 5 button dengan loop for dan selama loop memanggil method
makeButton(). Method makeButton(int w, Color C) berisi pengaturan terhadap
GridBagConstrain seperti berikut:
Buat GridBagConstraints c = new GridBagConstraints();
Buat Button b = new Button("" + w); dengan label w
Beri warna background b dengan C
Setel bobot x dan y pada c dengan c.weightx = w; dan c.weighty = 1;
Beri fill pada c dengan c.fill = GridBagConstraints.BOTH;
Setel constrain gbl dengan gbl.setConstraints(b, c);
Tambahkan ActionListener pada b di this frame, b.addActionListener(this);
Tambahkan tiap button pada frame

Tiap button jika di tekan akan bertambah lebarnya 1 satuan dan bila sudah mencapai
ukuran 4.0 akan kembali menjadi 0.0. berikut actionPerformed untuk tiap button
Button b = (Button)evt.getSource();
GridBagConstraints gbc = gbl.getConstraints(b);
if (++gbc.weightx > 4) {
gbc.weightx = 0;
}
gbl.setConstraints(b, gbc);
b.setLabel("" + gbc.weightx);
invalidate();
validate();

Berikut contoh outputnya,

Semua button sebelum di tekan

Semua button telah di tekan masing-masing 1 kali

3. Buatlah GUI AWT FlowLayoutChange.java seperti gambar di bawah ini, terdapat 3


(tiga) tombol CheckBox left,center,right dan 1 ChcekboxGroup
theGroup yang di pakai untuk mengelompokan CheckBox menjadi ComboBox,
dengan cara left=new Checkbox("to The Left", true, theGroup),
berarti tombol left terpilih dalam kelompok theGroup. Gunakan FlowLayout untuk
menyusun komponen dalam container frame dan setel pada alignment kiri
setLayout(new FlowLayout(FlowLayout.LEFT)). Dalam FlowLayout kita
dapat menyetel posisi alignment di LEFT, CENTER atau RIGHT dari komponen dalam
container. Tambahkan ItemListener untuk merubah layout alignment saat state item
CheckBox terpilih berubah (itemStateChanged) untuk masing-masing CheckBox
seperti kode dan gambar di bawah ini.
left.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange()==ItemEvent.SELECTED) {
setLayout(new FlowLayout(FlowLayout.LEFT));
validate();
}
}
});

Modifikasi FlowLayoutChange.java menjadi


(i) FlowLayoutChangeNamedInnerClass.java, dimana anda harus membuat class Listener
NamedInnerClass yaitu CBListener untuk menangani itemStateChanged dari CheckBox
(ii) FlowLayoutChangeThis.java, dimana anda harus membuat Listener this dengan
mengoverride method itemStateChanged untuk ketiga CheckBox.

4. Buatlah AWT GUI dengan nama MultiLayout.java, seperti gambar di bawah ini. Di
sediakan 2 Panel s dan e. Container di setel ke BorderLayout, sehingga kita dapat
menambahkan Label Masukan String Text pada posisi North dengan alignment
CENTER. Lalu menambahkan TextArea pada posisi Center. Setelah itu kita setel
layout panel e dengan GridLayout(0,1) artinya 1 baris 2 kolom, lalu tambahkan 3
komponen Button pada panel e yaitu dengan label Reformat, "Periksa Ejaan" dan
"Options", kemudian tambahkan panel e ke container pada posisi East. Terakhir kita setel
panel s ke FlowLayout, pada panel ini kita tambahkan 3 komponen Button dengan label
"Save", Cancel dan Help, tambahkan panel s ke container pada posisi South. Setel
ukuran frame (350,200) dan tambahkan addWindowListener supaya aplikasi dapat di
tutup.

5. Buatlah GUI AWT ChangeFont.java seperti gambar di bawah ini. Frame terdiri dari
beberapa variable yaitu private Font plainFont, boldFont, italicFont,
boldItalicFont; private List fontList; private Panel buttonPanel;
private Button resetButton, exitButton; private Label msgLabel;. Variabel
bertipe font di pakai untuk menyimpan dan merubah style dari font yang akan di
tampilkan pada label msgLabel. fontList di pakai untuk menyimpan isi dari style font
yang di pilih yaitu bold, italic dan bolditalic. Tombol reset di pakai untuk merubah font
menjadi default atau plain text. Variabel plaintFont di pakai untuk menyimpan font
plain, plainFont = new Font("plain", Font.PLAIN, 10);, begitu seterusnya untuk
yang bold, italic, bold dan bolditalic. Karena secara default layout pada AWT adalah
BorderLayout, maka msgLabel di tambahkan pada posisi North, fontList pada posisi
Center dan buttonPanel pada posisi South yang di setel layoutnya dengan
GridLayout(1,2) artinya 1 baris 2 kolom, yang akan di tambah button reset dan exit.
Buat listener sebagai berikut :
ResetButtonListener resetListener = new ResetButtonListener();
ExitButtonListener exitListener = new ExitButtonListener();
ListItemListener listListener = new ListItemListener();
Dan tambahkan listener tersebut pada :
resetButton.addActionListener(resetListener);
exitButton.addActionListener(exitListener);
fontList.addItemListener(listListener);
resetListener akan merubah font pada msgLabel menjadi plain
exitListener akan keluar dari aaplikasi
listListener akan merubah font msgLabel sesuai item yang terpilih, gunakan String S
= fontList.getSelectedItem(); if (S.equals("bold")){}

You might also like