1. Layout Manager
Selama ini, pada saat kita merancang
GUI untuk program Java, salah satu halangannya adalah bahwa komponen yang
digunakan dapat berpindah-pindah lokasi. Hal ini terjadi apabila kita me-resize
frame utama. Komponen dapat diorganisasikan di dalam container dengan
menggunakan class “layout manager”. Kita dapat mengubah secara manual class
layout yang ingin digunakan, dan setiap container dapat memiliki layout manager
masing-masing.
Seperti pada gambar, layout
manager bertugas menyusun komponen-komponen(button, label, checkbox, dll) di dalam
suatu container (panel, frame, dll). Layout manager menentukan posisi dan ukuran
setiap komponen di dalam container. Proses ini akan berbeda untuk setiap class
layout yang digunakan. AWT dan Swing memiliki beberapa layout manager standar
yang penggunaannya seringkali dikombinasikansesuai situasi dan kebutuhan

Standard
Layout Manager
·
FlowLayout
·
GridLayout
·
BorderLayout
·
CardLayout
·
GridBagLayout
·
Container
Cara
menggunakan layout manager:
·
Layout manager hrs dideklarasikan
terlebih dahulu sblm komponen ditambahkan ke kontainer.
·
Default layout manager untuk panel
adalah FlowLayout
·
Default layout manager untuk frame,
window, dan applet adalahBorderLayout
·
Utk membuat layout manager, hrs dibuat
instace dgn statement, misal :
FlowLayout flo = new FlowLayout();
Agar bisa digunakan maka hrs menambahkan
method :
setLayout();
Mengubah Default Layout Manager
·
Setiap
container memiliki default layout manager.
·
Pada
saat kita membuat sebuah container (misal: panel, frame, tabbed pane, split
pane, dll), maka container tsb memiliki objek Layout Manager masing-masing.
·
Kita
dapat mengubah layout manager default tersebut dengan suatu layout yang baru
dengan menggunakan method “setLayout()”. Contoh:
Default layout manager untuk
JFrame adalah: FlowLayout. Kita dapat mengubah layout tersebut dengan cara
misalnya:
myFrame.setLayout(new
BorderLayout());
1. FlowLayout
FlowLayout merupakan layout manager yang paling sederhana.
Layout ini menyusun komponen berdasarkan ukuran default masing-masing, dengan
posisi mulai dari kiri ke kanan dan dari atas ke bawah di dalam container yang
digunakan.
FlowLayout dapat memiliki “row justification”: LEFT,
CENTER, atau RIGHT serta “padding” horizontal/vertical. Secara default, layout
ini menggunakan justification CENTER. Artinya, semua komponen akan disimpan di
posisi tengah-tengah. FlowLayout merupakan default untuk JPanel.
Contoh
membuat panel dengan flow layout:
JPanel
panel1 = new JPanel();
panel1.setLayout(new FlowLayout());
Contoh Programnya
import
java.awt.*;
import java.awt.event.*;
import
javax.swing.*;
public class
Flow extends JFrame {
public Flow( )
{
createUserInterface();
}
private void
createUserInterface(){
JPanel panel1
= new JPanel();
panel1.setLayout(new
FlowLayout()); // baris ini dapat dihapus
panel1.add(new
JButton("satu"));
panel1.add(new
JButton("dua"));
panel1.add(new
JButton("tiga"));
panel1.add(new
JButton("empat"));
panel1.add(new
JButton("lima"));
this.add(panel1);
this.setTitle("Laihan
Flow");
this.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE );
this.setSize(400,
75);
this.setLocation(200,
200);
this.setVisible(true);
}
public static
void main(String[] args) {
Flow app = new
Flow();
}
}
Berikut tampilannya

2. GridLayout
GridLayout menempatkan komponen dalam bentuk “rectangular
grid”.
Ada 3
constructor untuk GridLayout:
-
GridLayout(): membuat layout dengan satu kolom
per komponen. Hanya satu baris yang digunakan.
-
GridLayout(int rows, int cols): membuat suatu
layout berdasarkan jumlah baris dan kolom yang diinginkan.
-
GridLayout(int rows, int cols, int hgap, int
vgap): membuat layout berdasarkan jumlah baris dan kolom yang diinginkan, serta
ukuran jarak (gap) horisontal maupun vertical untuk setiap baris dan kolom
tersebut.
GridLayout menempatkan komponen dengan urutan dari kiri ke
kanan dan dari atas ke bawah dan memaksa setiap komponen untuk menempati space
container yang kosong serta membagi rata ukuran space tersebut.
GridLayout paling cocok digunakan untuk menyusun komponen
yang berukuran sama, misalnya 2 buah JPanel berukuran sama di dalam sebuah
frame.
Contoh
membuat GridLayout:
frame.add(panel1);
frame.add(panel2);
frame.setLayout(new
GridLayout(2, 1));
Kita
dapat men-set jumlah baris dan kolom dengan angka 0. Hal ini berarti bahwa kita
tidak mempedulikan berapa banyak komponen yang akan masuk ke dalam dimensi
layout manager tersebut.
Contoh:
GridLayout(2,0)
Artinya: kita membuat layout manager dengan 2 baris
dan jumlah tak terbatas untuk kolomnya.
Contoh Programnya
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Grid extends JFrame {
public Grid( ) {
createUserInterface();
}
private void createUserInterface(){
JPanel panel1 = new JPanel();
panel1.setLayout(new GridLayout(2, 3));
panel1.add(new JButton("satu"));
panel1.add(new JButton("dua"));
panel1.add(new JButton("tiga"));
panel1.add(new JButton("empat"));
panel1.add(new JButton("lima"));
this.add(panel1);
this.setTitle("Latihan Grid");
this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE
);
this.setSize(350, 150);
this.setLocation(200, 200);
this.setVisible(true);
}
public static void main(String[] args) {
Grid app = new Grid();
}
}
Berikut tampilannya

3. CARD
LAYOUT
Dibawah
ini adalah cara untuk menggunakan card layout manager. Manajer Layout digunakan
dalam orginization dari Panel dan Bingkai. Tata letak yang tepat seharusnya
dipilih untuk mengakomodasi, resizings frame dan penggunaan.
Ada
2 konstruktor yang tersedia untuk manajer ini, seperti tata border layout:
publik
CardLayout ()
-Default,
jarak dari 0 kemungkinan akan diberikan
public
CardLayout (int hgap, vgap int)
-Di
mana Anda dapat menyediakan jarak horisontal dan vertikal seperti yang anda
inginkan.
Layout
Manager ini juga melibatkan penumpukkan frame dalam permintaan yang cocok, saat
memanggil fungsi Berikutnya, kerangka yang telah ditambahkan dalam urutan
setelah frame yang sedang ditampilkan adalah frame berikutnya.
public
void first (pemilik Container)
-Frame
pertama akan ditampilkan
public
void next (pemilik Container)
-Menampilkan
frame berikutnya
public
void previous (Container owner)
-Menampilkan
frame sebelumnya
public
void last( Pemilik Container )
-Menampilkan
frame terakhir
public
void show (Container owner,nama String )
-Menampilkan
[n] nama sebagai teks.
Contoh
kode :
import
java.awt.*;
import
java.awt.event.*; // need this to handle button presses
import
javax.swing.*;
public
class CardLayoutManagerExample extends JFrame {
private
CardLayout cardLayoutManager;
public
CardLayoutManagerExample(String title) {
super(title);
Container
contentPane = getContentPane();
JButton
firstButton, secondButton, thirdButton;
ActionListener
listener;
firstButton
= new JButton(“one”);
secondButton
= new JButton(“two”);
thirdButton
= new JButton(“three”);
cardLayoutManager
= new CardLayout(2,2);
contentPane.setLayout(cardLayoutManager);
contentPane.add(“first”,
firstButton);
contentPane.add(“second”,
secondButton);
contentPane.add(“third”,
thirdButton);
listener
= new ButtonListener();
firstButton.addActionListener(listener);
secondButton.addActionListener(listener);
thirdButton.addActionListener(listener);
}
class
ButtonListener implements ActionListener {
public
void actionPerformed(ActionEvent theEvent) {
cardLayoutManager.next(getContentPane());
}
}
public
static void main(String args[]) {
CardLayoutManagerExample
frame = new CardLayoutManagerExample(“Example”);
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.setSize(100,100);
frame.setVisible(true);
}
}
4. BORDER
LAYOUT
Dibawah
ini adalah cara penggunaan Border layout Manager. Manajer Layout digunakan
dalam orginization dari Panel dan Bingkai. Tata letak yang tepat seharusnya
dipilih untuk mengakomodasi, resizings frame dan penggunaan.
Kali
ini hanya ada 2 konstruktor, default dan satu lagi di mana jarak horisontal dan
vertikal, yang harus diberikan.
public
BorderLayout ()
public
BorderLayout (int hgap, vgap int)
Layout
manager ini cukup mudah, sehingga cara terbaik untuk mempelajarinya adalah
dengan sebuah contoh.
Contoh
Kode:
import
java.awt.*;
import
javax.swing.*;
public
class BorderLayoutManagerExample extends JFrame {
public
BorderLayoutManagerExample (String title) {
super(title);
Container
contentPane = getContentPane();
contentPane.setLayout(new
BorderLayout(2,2));
//
Menambahkan komponen dengan layout manager
contentPane.add(BorderLayout.NORTH,
new JButton(“North”));
contentPane.add(BorderLayout.SOUTH,
new JButton(“South”));
contentPane.add(BorderLayout.EAST,
new JButton(“East”));
contentPane.add(BorderLayout.WEST,
new JButton(“West”));
contentPane.add(BorderLayout.CENTER,
new JButton(“Center”));
}
public
static void main(String args[]) {
BorderLayoutManagerExample
frame = new BorderLayoutManagerExample(“Example”);
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.setSize(500,
300);
frame.setVisible(true);
}
}
Tombol
frame disini tidak melakukan apapun. Ini adalah sebuah contoh yang sederhana
dari penggunaan layout manager. Anda bisa mencoba untuk mengubah
fram.serResizable menjadi true dan resize frame tersebut.
Source
: Border Layout Manager Pada Java by islam-download.net
5. GUI
Gridbag layout
GridBagLayout adalah meruoakan
salah satu tata letak penyedia tata ketak komponen GUI pada java yang paling
flexibel dan kompleks. Sehingga ini dapat mmungkinkan agi programer untuk
mengatur tata letak komponen GUI dalam beberapa span baris atau kolom. GridBagLayout menempatkan komponen dalam
bentuk empat persegipanjang (sel).
Contoh rutin program
GridBag:ayout sebagai berikut
|
Hasil running sebagai berikut :

Penentuan tata letak kompnen
layout yang ada menggunakan constrain. Constrain merupakan method variabel yang
berada pada kelas GridBagLayout. Constrain yang digunakan pada program diatas
adalah gridx,gridy. Constrain tersebuat mengatur tata letak dalam titik
koordinat x dan y. penentuan letak dilakukan saat penambahan komponen layout.
Rutin penambahan sebagai berikut :
addGB(new Button("North"), x = 1, y =
0);
addGB(new Button("West"), x = 0, y =
1);
addGB(new Button("Center"), x = 1, y =
1);
addGB(new Button("East"), x = 2, y =
1);
addGB(new Button("South"), x = 1, y =
2);
titik koordinat pusat (0,0) berada tepat di tengah komponen Layout
yang dibuat. Pengaturan titik koordinat dilakukan dalam kelas
GridBagLayoutConstrain. Kemudian agar titik koordinat yang sudah diatur dalam
kelas GridBagConstrain dapat diimplementasikan dalam komponen GUI yang dibuat
perlu dilakukan pembuatan objek agar segala method variable yang ada di dalam
kelas GridBagConstrain dapat dianggil. Rutin pembuatan objek sebagai berikut :
GridBagConstraints
constraints = new
GridBagConstraints();
Sedangkan proses pamanggilan
method variabel yang berada dalam kelas GridBagConstrain sebagai berikut :
void addGB (Component component, int x, int y){
constraints.gridx = x;
constraints.gridy = y;
add (component, constraints);
}
Daftar method variabel atau
constrain yang dapat dipanggil dan diimplementasikan dalam penentuan tata letak
dan ukuran komponen layout sebagai berikut :
1. gridx,gridy
Constrain ini
digunakan untuk menentukantata letak komponen berdasarakan titik koordinat x
dan y, x untuk vertikal dan y untuk horisontal. Posisis koordinat (x,y) pusat
atau (0,0) berada tepat ditengah GUI applet.
2. gridwidth,gridheight
Digunakan untuk
menentukan jumlah kolom dan baris yang akan ditempati komponen GUI layout.
3. Fill
DIgunakan untuk
mengatur apakah komponen GUI yang ditambahkan akan menempati seluruh tempat
yang disediakan atau tidak.
4. ipadx,ipady
digunakan untuk
menentukan lebar dan ketinggian komponen button yang ditambahkan.
5. Insets
Digunakan untuk
menentukan jarak antar komponen GUI.
6. Achor
Digunakan untuk
menentukan letak komponen brdasarkan area. Konstanta yang dipakai dalam anchor
adalah adalah CENTER (default), PAGE_START, PAGE_END, LINE_START, LINE_END,
FIRST_LINE_START, FIRST_LINE_END, LAST_LINE_END, dan LAST_LINE_START.
Implementasi tata
letak anchor sebagai berikut :
-------------------------------------------------
|FIRST_LINE_START
PAGE_START FIRST_LINE_END|
| |
|
|
|LINE_START
CENTER LINE_END|
|
|
|
|
|LAST_LINE_START
PAGE_END LAST_LINE_END|
-------------------------------------------------
7. weightx,weighty
Digunakan untuk
menentukan jarak ruang antar kolom dan antar baris.
6. CONTAINER
Container merupakan sebuah kelas yang
digunakan untuk sebagai tempat atau wadah dalam penataan komponen GUI layout
management.
Construktor container adalah :
Container():
Mehod-method yang dapat diakses dari
kelas container adalah sebagai berikut :
·
add(component comp)
menamnahkan
komponen tertentu diakhir container
·
addContainerListener(ContainerListener)
menambahkan
container listener tertentu ke container event dari container ini
·
addImpl(Component comp, Object constraints,
int index)
menambahkan
komponen tertentu ke container ini ada index tertentu
·
addNotify()
membuat
container dapat dilihat melalui layar native screen tertentu
·
addPropertyChangeListener(String property
Name, PropertyChange Listener listener)
menambahkan
suatu PropertyChangeListener pada listener list untuk property tertentu
·
applyComponentOrientation(ComponenOrientation
o)
mengeset
property ComponentOrientation dari
container ini dan semua komponen yang terkandung di dalamnya.
·
areFocusTraversalKeySet(int id)
mengembalikan
apakah set dari focus traversal keys untuk suatu operasi focus traversal yang
diberikan telah secara eksplisit didefinisikan untuk container ini.
·
doLayout()
menyebabkan
container melayout componennya
·
findComponentAt(int x,int y)
melokasikan
komponen yang terlihat yang beada pad aposisi tertentu
·
findComponentAt(point p)
melokasikan
komponen yang terlihat yang beada pada point tertentu
·
getAlignmentX()
mengembalikan
perataan pada sumbu x
·
getAlignmentY()
mengembalikan
perataan pada sumbu Y
·
getComponent(int n)
mendapatkan
componen yang ke n
·
getComponentAt(int x,int y)
mencari
letak componen dengan posisi x, y
·
getComponentAt(Point p)
menghasilkan
component yang mengandung point tertentu
·
getComponentCount()
mendapatkan
sejumlah componen dalam panel tersebut
·
getComponents()
mendapatkan
semua component pada container
·
getContainerListeners()
mengembalikan
suatu array dari semua container listeners yang diregistrasi pada container.
·
getFocusTraversalkeys(int id)
mengembalikan
set dari focus traversal keys untuk suatu operasi traversal pada container ini.
·
getFokusTraversalPolicy()
mengembalikan
focus traversal policy yang akan mengatur keyboard traversal dari Container’s
children atau mengembalikan null jika container bukanlah suatu focus cycle
root.
·
getInsets()
menentukan
sisipan dalam container tersebut yang mengindikasikan ukuran container
·
getLayout()
mendapatkan
layout manager dari pengelola layout tersebut
·
getListeners(Class listenerType)
mengembalikan
suatu array dari semua objek yang sedang diregistrasi sebagai FooListeners
berdasarkan container ini.
·
getMaximumSize()
mengembalikan
ukuran maximum container ini.
·
getMinimumSize()
mengembalikan
ukuran minimum size container ini
·
getPreferredSize()
mengembalikan
preferred size container ini
·
invalidate()
Invalidates
the container
·
isAncestorOf(Component c)
Memeriksa
jika Checks komponen terkandung dalam hierarki komponen container ini
·
isFocusCycleRoot()
mengembalikan
apakah container ini adalah root suatu focus traversal cycle
·
isFocusCycleRoot(Container container)
mengembalikan
apakah suatu container merupakan focus cycle root dari focus traversal cycle
yang dimiliki oleh container ini
·
isFocusTraversalPolicySet()
mengembalikan
apakah focus traversal policy telah secara eksplisit diset untuk container ini
·
list(PrintStream out, int indent)
mencetak
suatu listing dari container ini ke suatu output stream yang telah ditentukan
·
list(PrintWriter out, int indent)
mencetak
suatu list, dimulai dari suatu indent, ke suatu print writer
·
paint(Graphics g)
mengecat/mewarnai
container
·
paintComponents(Graphics g)
mengecat/mewarnai
masing-masing komponen container ini
·
paramString()
mengembalikan
string yang merepresentasikan kondisi container ini
·
print(Graphics g)
mencetak
container
·
printComponents(Graphics g)
mencetak(print)
komponen-komponen dalam kontainer ini
·
processContainerEvent(ContainerEvent e)
memproses
container event yang sedang terjadi pada container dengan mengirimkan mereka
pada sembarang ContainerListener yang telah diregistrasi
·
processEvent(AWTEvent e)
memproses
event-event pada container ini
·
remove(Component comp)
menghapuskan
suatu komponen, pada suatu indeks container ini
·
removeAll()
menghapuskan
semua komponen dari container ini
·
removeContainerListener(ContainerListener I)
menghapuskan
suatu container listener sehingga tidak lagi menerima container event dari
container ini
·
removeNotify()
membuat
container ini menjadi tidak dapat ditampilkan (undisplayable) dengan
memindahkan koneksinya ke nativa screen resource
·
setFocusCycleRoot(boolean focusCycleRoot)
mengeset
apakah container ini merupakan root dari suatu “focus traversal cycle”
·
setFocusTraversalKeys(int id, Set keystrokes)
mengeset
“focus traversal keys” untuk suatu operasi traversal dari container ini
·
setFocusTraversalPolicy(FocusTraversalPolicy
policy)
mengeset
focus traversal policy yang akan mengatur keyboard traversal dari “Container’s
children”, jika container ini merupakan suatu “focus cycle root”
·
setFont(Font f)
mengeset
font container ini
·
setLayout(LayoutManager mgr)
·
transferFocusBackward()
mengeset
layout manager untuk container ini
·
transferFocusDownCycle()
·
update(Graphics g)
mengupdate
container
·
validate()
mengvalidasi
container dan semua sub componennya
·
validateTree()
murunkan
sub component container secara berulang dan menghitung ulang layout setiap
percabangan sesuai dengan yang dibutuhkan
Kesimpulan
Dari pembahasan mengenai Layout Manager ini maka dapat
disimpulkan bahwa dengan menggunakan Layout Manager ini dapat mengatasi
berpindah-pindahnya komponenen yang di gunakan. Sehingga akan lebih
terorganisir di dalam container. Dengan bermacam-macam sub bagian dari Layout
Manager, seperti di antaranya ada, FlowLayout, GridLayout dll, membuat kita
dapat mengubah secara manual class layout
yang ingin digunakan, dan setiap container dapat memiliki layout manager
masing-masing. Sehingga pembuatan GUI untuk program java menjadi lebih rapi dan
terorganisir sesuai yang di butuhkan.
No comments:
Post a Comment