Border Layout
Border layout merupakan default layout pada windows, menghasilkan 5 area untuk meletakan komponen, 4 area ini diberi nama sisi EAST, WEST NORTH, SOTH, dengan jarak menuju ke area tengah (CENTER), ketika menambahkan komponen kita harus menentukan area dari komponen tersebut, sesuai 5 area yang ada, urutan tidak penting pada layout ini. ukuran komponen akan berpengaruh pada ukuran parentnta(Frame)
import java.awt.*;
import javax.swing.*;
public class kajian3 extends JFrame{
public kajian3(){
setTitle("Layout Border Layout");
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); // mendapatkan ukuran layar
int w = 600;
int h = 600;
int x = ((int)dim.getWidth() - w) / 2; // mendapatkan posisi x agar berada tepat ditengah layar
int y = ((int)dim.getHeight() - h) /2; // mendapatkan posisi y agar berada tepat ditengah layar
setBounds(x,y,w,h); // menset frame ke tengah layar
Container con = getContentPane();
JTextArea textarea = new JTextArea("CENTER", w, y);
JButton but1 = new JButton("EAST");
JButton but2 = new JButton("WEST");
JButton but3 = new JButton("SOUTH");
JButton but4 = new JButton("NORTH");
con.add(textarea,BorderLayout.CENTER);
con.add(but1,BorderLayout.EAST);
con.add(but2,BorderLayout.WEST);
con.add(but3,BorderLayout.SOUTH);
con.add(but4,BorderLayout.NORTH);
setDefaultCloseOperation(EXIT_ON_CLOSE);//
setVisible(true);
}
public static void main(String [] args){
kajian3 ja = new kajian3();
ja.setVisible(true);
}
}
Flow Layout
FlowLayout merupakan layout manager pada java yang mana komponen GUI diatur dan ditata secara mengalir artinya komponen2 tersebut diatur dari kiri kekanan atau sebaliknya sesuai dengan alignment pengaturannya.
import java.awt.*;
import javax.swing.*;
public class kajian3 extends JFrame{
public kajian3(){
setTitle("Layout Flow Layout");
Container con = getContentPane();
JTextArea textarea = new JTextArea("CENTER");
JButton but1 = new JButton("Button1");
JButton but2 = new JButton("Button2");
JButton but3 = new JButton("Button3");
JButton but4 = new JButton("Button4");
con.setLayout(new FlowLayout());
con.add(but1);
con.add(but2);
con.add(but3);
con.add(but4);
con.add(textarea);
//set Frame
setLocationRelativeTo(null);
setSize(200, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);//
setVisible(true);
}
public static void main(String [] args){
kajian3 ja = new kajian3();
ja.setVisible(true);
}
}
Card Layout
menempatkan komponen-komponen (biasanya panel) satu di atas yanglainnya seperti tumpukan kartu. Kita hanya bisa melihat satu dalam satu waktu, dan andadapat mengganti ke panel yang lain dengan menggunakan kontrol lain yang memilihpanel mana yang berada di sebelah atas.
import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
public class cardlayout extends Applet implements ActionListener {
Panel cardPanel;
Panel firstP, secondP, thirdP;
Panel buttonP;
Button first, second, third;
CardLayout ourLayout;
public void init() {
cardPanel = new Panel();
ourLayout = new CardLayout();
cardPanel.setLayout(ourLayout);
firstP = new Panel();
firstP.setBackground(Color.blue);
secondP = new Panel();
secondP.setBackground(Color.yellow);
thirdP = new Panel();
thirdP.setBackground(Color.green);
first = new Button("First");
first.addActionListener(this);
second = new Button("Second");
second.addActionListener(this);
third = new Button("Third");
third.addActionListener(this);
buttonP = new Panel();
buttonP.add(first);
buttonP.add(second);
buttonP.add(third);
this.setLayout(new BorderLayout());
this.add(buttonP, BorderLayout.SOUTH);
this.add(cardPanel, BorderLayout.CENTER);
cardPanel.add(firstP, "First");
cardPanel.add(secondP, "Second");
cardPanel.add(thirdP, "Third");
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == first)
ourLayout.show(cardPanel, "First");
if (e.getSource() == second)
ourLayout.show(cardPanel, "Second");
if (e.getSource() == third)
ourLayout.show(cardPanel, "Third");
}
}
Box Layout
Layout manager yang telah kita bahas sebelumnya merupakan bagian dari package java.awt. Javax.swing memiliki beberapa tambahan layout manager lagi, salah satunya adalah: BoxLayout. Layout manager ini sangat berguna untuk membuat toolbars sederhana atau vertical button bars.Cara kerjanya sangat sederhana yaitu menempatkan komponen dalam satu baris atau satu kolom.
Untuk mempermudah penggunaan BoxLayout, Swing menyediakan sebuah kelas yang bernama Box yaitu sebuah container yang secara otomatis memiliki BoxLayout manager. Box memiliki beberapa methods yang akan mempermudah kita dalam menggunakan BoxLayout manage
import java.awt.*;
import javax.swing.*;
public class kajian3 extends JFrame{
public kajian3(){
setTitle("Layout Flow Layout");
Container con = getContentPane();
JTextArea textarea = new JTextArea("CENTER");
JButton but1 = new JButton("Button1");
JButton but2 = new JButton("Button2");
JButton but3 = new JButton("Button3");
JButton but4 = new JButton("Button4");
con.setLayout(new BoxLayout(con, WIDTH));
con.add(but1);
con.add(but2);
con.add(but3);
con.add(but4);
con.add(textarea);
//set Frame
setLocationRelativeTo(null);
setSize(200, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);//
setVisible(true);
}
public static void main(String [] args){
kajian3 ja = new kajian3();
ja.setVisible(true);
}
}
Grid Layout
Gridlayout merupakan salah satu layout yang digunakanuntuk mengatur tata letak pada panel. Gridlayout merupakan bagian dari library AWT. Grid layout menempatkan komponen dalam bentuk “rectangular grid”.
Metode grid layout akan membagi area layar menjadi sejumlah tempat dalam bentuk matriks ukuran yang sama. Area layar dibagi dalam format baris dan kolom, sehingga setiap komponen akan memiliki ukuran yang sama, tidak melihat dari ukuran yang sebenarnya. Setiap terjadi perubahan ukuran frame, ukuran setiap komponen pun akan berubah. Pada prinsipnya yang dipertahankan adalah jumlah barisdan kolom yang telah ditentukan.
Grid layout menempatkan komponen dengan urutan dari kiri kekanan, dari atas kebawah dan memaksa setiap komponen untuk menempati space container yang kosong serta membagi rata ukuran setiap space tersebut. gridLayout paling cocok digunakan untuk menyusun komponen yang berukuran sama , misal 2 buah JPanel berukuran sama di dalam sebuah frame.
Ada 3 konstuktor untuk grid layout:
a. GridLayout() => membuat layout dengan satu kolom perkomponen. Hanya satu
baris yang digunakan
b. GridLayout(int rows, int cols) => membuat satu layout berdasarkan jumlah baris
dan kolom yang digunakan.
c. GridLayout(int rows, int cols, int hgap, int vgap) => membuat layout berdasarkan
jumlah baris dan kolom yang diinginkan, serta ukuran jarak (gap)
horizontal maupun vertical untuk setiap baris dan kolom tersebut.
import java.awt.*;
import javax.swing.*;
public class kajian3 extends JFrame{
public kajian3(){
setTitle("Layout Flow Layout");
Container con = getContentPane();
JTextArea textarea = new JTextArea("CENTER");
JButton but1 = new JButton("Button1");
JButton but2 = new JButton("Button2");
JButton but3 = new JButton("Button3");
JButton but4 = new JButton("Button4");
con.setLayout(new GridLayout());
con.add(but1);
con.add(but2);
con.add(but3);
con.add(but4);
con.add(textarea);
//set Frame
setLocationRelativeTo(null);
setSize(600, 500);
setDefaultCloseOperation(EXIT_ON_CLOSE);//
setVisible(true);
}
public static void main(String [] args){
kajian3 ja = new kajian3();
ja.setVisible(true);
}
}
GridBag Layout
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”, yang berarti bahwa koordinat suatu komponen ditentukan oleh sekumpulan komponen lainnya.Baris dan kolom dari grid tersebut bersifat “stretch” yang bergantung pada size dan constraint yang milikinya.
Walaupun fleksibel, pembuatan GridBag ini terkadang sangat membingungkan karena kita harus mengatur berbagai size dan constraint dari setiap komponen yang digunakan. Sebenarnya, penggunaan GridBagLayout ini jauh lebih mudah apabila kita menggunakan tools yang mendukung WYSIWYG GUI builder.
import java.awt.*;
import javax.swing.*;
public class kajian3 extends JFrame{
public kajian3(){
setTitle("Layout Flow Layout");
Container con = getContentPane();
JTextArea textarea = new JTextArea("CENTER");
JButton but1 = new JButton("Button1");
JButton but2 = new JButton("Button2");
JButton but3 = new JButton("Button3");
JButton but4 = new JButton("Button4");
con.setLayout(new GridBagLayout());
con.add(but1);
con.add(but2);
con.add(but3);
con.add(but4);
con.add(textarea);
//set Frame
setLocationRelativeTo(null);
setSize(400, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);//
setVisible(true);
}
public static void main(String [] args){
kajian3 ja = new kajian3();
ja.setVisible(true);
}
}