Pengertian macam-macam dan Layout Manager
Pengertian dan macam macam Layout Manager
Artikel ini hanyalah sebuah contoh untuk yang lebih lengkap dan lebih jelas bisa download link di bawah
Pengertian Layout Manager
Digunakan dalam organisasi dari panel dan bingkai. Tata letak yang
tetap seharusnya dipilih untuk mengakomodasikan, resizings frame dan penggunaan
· layout
manager bertugas menyusun komponen-komponen(button, label, checkbox, dll) di
dalam suatu container (panel, frame, dll).
·
Layout
manager menentukan posisi danukuran 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 dikombinasikan sesuai situasi dan kebutuhan kita.
Untuk 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 LayoutManager 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());
Macam-macam Standard Layout Manager terdiri dari:
·
FlowLayout
·
GridLayout
·
BorderLayout
·
BoxLayout
·
CardLayout
·
GridBagLayout
·
SpringLayout
·
GroupLayout
1. FlowLayout
·
FlowLayout merupakan layout manager yang simpel.
·
FlowLayout menyusun komponen berdasarkan ukuran
defaultmasing-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, flow layout menggunakan justification
CENTER. Artinya, semua komponen akan disimpan di posisi tengah-tengah.
·
FlowLayout merupakan default untuk JPanel.
Penggunaan FlowLayout
Contoh:
JPanel panel1 = new JPanel();panel1.setLayout(new
FlowLayout());
Pada dasarnya, untuk aplikasi sesungguhnya, kita tidak
disarankan menggunakan FlowLayout karena sifatnya yang tidak bisa memposisikan
komponen dengan pasti.
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.
·
GridLayout akan
memaksa setiap komponen untuk menempati space container yang kosong serta
membagi rata ukuran space tersebut.
Penggunaan GridLayout
·
GridLayout paling cocok digunakan untuk menyusun
komponen yang berukuran sama, misalnya 2 buah JPanel berukuran sama di dalam
sebuah frame.
·
Contoh:
frame.add(panel1);
frame.add(panel2);
frame.setLayout(new GridLayout(2, 1));
·
Kita dapat men-set jumlah baris dan kolom dengan angka
0. Artinya, 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 unlimited number untuk kolomnya.
Apa yang
terjadi kalau kita memiliki 10 komponen?
3. BorderLayout
·
BorderLayout menyusun komponen berdasarkan lokasi
geografis: NORTH, SOUTH, EAST, WEST, and CENTER.
·
Secara optional, kita dapat juga memberikan paddingdi
antara komponen.
·
BorderLayout merupakan layout default untuk JWindowdan
JFrame.
·
Karena setiap komponen diasosiasikan dengan suatu arah
geografis, akibatnya layout ini hanya dapat menangani maksimal 5 komponen.
Penggunaan BorderLayout
·
Pada saat menambahkan suatu komponen kepada container
yang memiliki border layout, kita harus menentukan secara bersamaan
komponen-nya dan posisi-nya.
·
Contoh:
frame.setLayout(new BorderLayout( ));
frame.add(new JButton("Button1"), BorderLayout.NORTH
);
frame.add(new JButton("Button2"),
BorderLayout.SOUTH );
4. BoxLayout
·
Layout manager yang telah kita bahas sebelumnya
merupakan bagian dari package java.awt.
·
Javax.swingmemiliki beberapa tambahan layout manager
lagi, salah satunya adalah: BoxLayout.
·
Layout manager ini sangat berguna untuk membuat
toolbarssederhana atau vertical button bars.
·
Cara kerjanya sangat sederhana yaitu menempatkan
komponen dalam satu baris atau satu kolom.
Penggunaan BoxLayout
·
Untuk mempermudah penggunaan BoxLayout, Swing
menyediakan sebuah kelas yang bernama Boxyaitu sebuah container yang secara
otomatismemiliki BoxLayout manager.
·
Box memiliki beberapa methodsyang akan mempermudah
kita dalam menggunakan BoxLayout manager, yaitu:
createHorizontalBox() untuk
membuat box horizontal
createHorizontalGlue() untuk
merekatkan komponen
createHorizontalStrut(int n) untuk memberi jarak antar komponen
createVerticalBox() untuk
membuat box vertical
createVerticalGlue() untuk
merekatkan komponen
createVerticalStrut(int n) untuk memberi jarak antar komponen
5. CardLayout
·
CardLayout merupakan layout manager yang mampu
menciptakan efek “tumpukan” komponen.
·
Artinya, layout ini tidak memposisikan komponen di
lokasi-lokasi tertentu di dalam kontainer, melainkan menampilkannya satu demi
satu.Di balik button “one”,terdapat komponen lainnya.
Penggunaan CardLayout
·
Penggunaan CardLayout biasanya untuk membuat panel
yang bersifat custom-tabbed.
·
Namun, sebenarnya kita dapat membuat panel tersebut
dengan menggunakan komponen JTabbedPane.
·
Untuk mempraktekkan cara kerja dan efek “tumpukan”dari
CardLayout ini, kita perlu mempelajari terlebih dahulu mengenai “event-driven
programming” seperti yang ada di Latihan 5.
6. GridBagLayout
·
GridBagLayout merupakan layaout manager yang sangat
fleksibel.
·
Layout ini memampukan kita untuk memposisikan komponen
relatif terhadap komponen lainnya berdasarkan constraint tertentu.
·
Dengan menggunakan GridBagLayout, kita dapat
menciptakan layout apapun juga, tanpa batas.
·
Komponen disusun pada koordinat tertentu pada sebuah
grid yang disebut “logical coordinate”.
·
Logical coordinate berarti bahwa koordinat suatu
komponen ditentukan oleh sekumpulan komponen lainnya.
·
Baris dan kolom dari grid tersebut bersifat “stretch”
yang bergantung pada sizedan constraintyang dimilikinya.
Penggunaan GridBag
·
Walaupun fleksibel, pembuatan GridBag ini terkadang
sangat membingungkan karena kita harus mengatur berbagai sizedan constraint
dari setiap komponen yang digunakan.
·
Sebenarnya, penggunaan GridBagLayout ini jauh lebih
mudah apabila kita menggunakan tools yang mendukung WYSIWYG GUI builder.
(contohnya: NetBeans IDE)
7. StringLayout
SpringLayout
adalah manajer layout yang fleksibel yang dirancang untuk digunakan oleh
pembangun GUI. Ini memungkinkan Anda menentukan hubungan yang tepat antara tepi
komponen di bawah kontrol. Sebagai contoh, Anda mungkin mendefinisikan bahwa
tepi kiri satu komponen adalah jarak tertentu (yang dapat dinamis dihitung)
dari tepi kanan dari komponen kedua.
Contoh progam
import java.awt.Component;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.SpringLayout;
public class SpringSample {
public static void main ( String args []) {
JFrame frame = new JFrame ( "SpringLayout" ) ;
frame.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE ) ;
Container contentPane = frame.getContentPane () ;
SpringLayout layout = new SpringLayout () ;
contentPane.setLayout ( layout ) ;
Component left = new JLabel ( "Left" ) ;
Component right = new JTextField ( 15 ) ;
contentPane.add ( left ) ;
contentPane.add ( right ) ;
layout.putConstraint ( SpringLayout.WEST, left, 10 , SpringLayout.WEST, contentPane ) ;
layout.putConstraint ( SpringLayout.NORTH, left, 25 , SpringLayout.NORTH, contentPane ) ;
layout.putConstraint ( SpringLayout.NORTH, right, 25 , SpringLayout.NORTH, contentPane ) ;
layout.putConstraint ( SpringLayout.WEST, right, 20 , SpringLayout.EAST, left ) ;
frame.setSize ( 300 , 100 ) ;
frame.setVisible ( true ) ;
}
}
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.SpringLayout;
public class SpringSample {
public static void main ( String args []) {
JFrame frame = new JFrame ( "SpringLayout" ) ;
frame.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE ) ;
Container contentPane = frame.getContentPane () ;
SpringLayout layout = new SpringLayout () ;
contentPane.setLayout ( layout ) ;
Component left = new JLabel ( "Left" ) ;
Component right = new JTextField ( 15 ) ;
contentPane.add ( left ) ;
contentPane.add ( right ) ;
layout.putConstraint ( SpringLayout.WEST, left, 10 , SpringLayout.WEST, contentPane ) ;
layout.putConstraint ( SpringLayout.NORTH, left, 25 , SpringLayout.NORTH, contentPane ) ;
layout.putConstraint ( SpringLayout.NORTH, right, 25 , SpringLayout.NORTH, contentPane ) ;
layout.putConstraint ( SpringLayout.WEST, right, 20 , SpringLayout.EAST, left ) ;
frame.setSize ( 300 , 100 ) ;
frame.setVisible ( true ) ;
}
}
8.
GroupLayout
GroupLayout
adalah manajer
layout yang dikembangkan untuk digunakan oleh alat pembangun GUI, tetapi juga
dapat digunakan secara manual. GroupLayout
bekerja dengan
layout horisontal dan vertikal secara terpisah. Tata letak didefinisikan untuk
setiap dimensi secara independen. Akibatnya, bagaimanapun, setiap komponen
harus didefinisikan dua kali dalam tata letak. Jendela Cari ditunjukkan di atas
adalah contoh dari GroupLayout
.
3 komentar:
permisi, mau tanya. di java bisa bikin layout semacam responsive gitu ga kayak html?
Ini yang saya cari-cari, mantap gan.
memek ah
Posting Komentar
Terimakasih Atas Komentarnya semoga berguna demi blog ini