Sabtu, 03 Desember 2011

layout manager (border layout, flow layout, card layout, box layout, grid layout, gridbag layout)

BorderLayout 
  • menyusun komponen berdasarkan lokasi geografis: NORTH, SOUTH, EAST, WEST, and CENTER.
  • Secara optional, kita dapat juga memberikan padding di antara komponen.
  • BorderLayout merupakan layout default untuk JWindow dan JFrame.
  • Karena setiap komponen diasosiasikan dengan suatu arah geografis, akibatnya layout ini hanya dapat menangani maksimal 5 komponen.
CONTOH CODING BorderLayout:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class BorderLayoutApp1 extends JFrame {
public BorderLayoutApp1(  ) {
createUserInterface();  
}
private void createUserInterface(){
this.setTitle("Border1");
this.setSize(300, 300);
this.setLocation(200, 200);
this.setLayout(new BorderLayout(  ));
this.add(new JButton("North"), BorderLayout.NORTH );
this.add(new JButton("South"), BorderLayout.SOUTH );
this.add(new JButton("East"), BorderLayout.EAST );
this.add(new JButton("West"), BorderLayout.WEST );
this.add(new JButton("Center"), BorderLayout.CENTER );
this.setVisible(true);
}
public static void main(String[] args) {
BorderLayoutApp1 app = new BorderLayoutApp1();
app.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
}

FlowLayout 
  • merupakan layout manager yang simpel.
  • FlowLayout 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, flow layout menggunakan justification CENTER. Artinya, semua komponen akan disimpan di posisi tengah-tengah.
  • FlowLayout merupakan default untuk JPanel.
CONTOH CODING FlowLayout:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Flow extends JFrame {
public Flow(  ) {
createUserInterface();
}
private void createUserInterface(){
// FlowLayout is default layout manager for a JPanel
JPanel panel1 = new JPanel();
panel1.setLayout(new FlowLayout()); // !! baris ini dapat dihapus !!
panel1.add(new JButton("One"));
panel1.add(new JButton("Two"));
panel1.add(new JButton("Three"));
panel1.add(new JButton("Four"));
panel1.add(new JButton("Five"));
this.add(panel1);
this.setTitle("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();
}
}

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.
  • Penggunaan CardLayout biasanya untuk membuat
    panel yang bersifat custom-tabbed.
  • Namun, sebenarnya kita dapat membuat panel tersebut dengan menggunakan komponen
    JTabbedPane.
CONTOH CODING CardLayout:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Card extends JPanel {
CardLayout cards = new CardLayout(  );
public Card(  ) {
setLayout(cards);
ActionListener listener = new ActionListener(  ) {
public void actionPerformed(ActionEvent e) {
cards.next(Card.this);
}
};
JButton button;
button = new JButton("one");
button.addActionListener(listener);
add(button, "one");
button = new JButton("two");
button.addActionListener(listener);
add(button, "two");
button = new JButton("three");
button.addActionListener(listener);
add(button, "three");
}
public static void main(String[] args) {
JFrame frame = new JFrame("Card");
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setSize(200, 200);
frame.setLocation(200, 200);
frame.setContentPane(new Card(  ));
frame.setVisible(true);
}
}

BoxLayout
  • 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.
  • Box memiliki beberapa methods yang 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
CONTOH CODING BoxLayout:

    import java.awt.FlowLayout;
    import java.awt.Font;
    import java.text.Format;
    import java.text.NumberFormat;
    import java.util.Locale;

    import javax.swing.BoxLayout;
    import javax.swing.JFormattedTextField;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;

    public class boxlayout {
    public static void main(String args[]) throws Exception {
    JFrame frame = new JFrame("Jformated Demo | Mata Uang");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Font font = new Font("Tahoma", Font.BOLD, 16);

    JLabel label;
    JFormattedTextField input;
    JPanel panel;

    BoxLayout layout = new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS);
    frame.setLayout(layout);

    Format currency = NumberFormat.getCurrencyInstance(Locale.US);
    label = new JLabel("Mata Uang Amerika:");
    input = new JFormattedTextField(currency);
    input.setValue(1000.25);
    input.setColumns(20);
    input.setFont(font);
    panel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
    panel.add(label);
    panel.add(input);
    frame.add(panel);

    frame.pack();
    frame.setVisible(true);
    }
    }



GridLayout 
  • menempatkan komponen dalam bentuk “rectangular grid”.  Ada 3 constructor untuk GridLayout:
GridLayout():  membuat layout dengan satu kolom per komponen. 
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 ur utan 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.
CONTOH CODING GridLayout:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class gridlayout extends JFrame {
public gridlayout(  ) {
createUserInterface();
}
private void createUserInterface(){
JPanel panel1 = new JPanel();
panel1.setLayout(new GridLayout(3, 2));
panel1.add(new JButton("One"));
panel1.add(new JButton("Two"));
panel1.add(new JButton("Three"));
panel1.add(new JButton("Four"));
panel1.add(new JButton("Five"));
this.add(panel1);
this.setTitle("Grid");
this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
this.setSize(200, 200);
this.setLocation(200, 200);
this.setVisible(true);
}
public static void main(String[] args) {
gridlayout app = new gridlayout();
}
}

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 size dan constraint yang dimilikinya.
CONTOH CODING GridBagLayout:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class gridbaglayout extends JFrame {
private GridBagConstraints constraints;
public gridbaglayout(  ) {
createUserInterface();
}
private void createUserInterface(){
constraints = new GridBagConstraints(  );
this.setLayout(new GridBagLayout(  ));
int x, y;  // for clarity
this.addGB(new JButton("North"),  x = 1, y = 0);
this.addGB(new JButton("West"),   x = 0, y = 1);
this.addGB(new JButton("Center"), x = 1, y = 1);
this.addGB(new JButton("East"),   x = 2, y = 1);
this.addGB(new JButton("South"),  x = 1, y = 2);
this.setTitle("gridbaglayout");
this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
this.setSize(225, 150);
this.setLocation(200, 200);
this.setVisible(true);
}
private void addGB(Component component, int x, int y) {
constraints.gridx = x;
constraints.gridy = y;
this.add(component, constraints);
}
public static void main(String[] args) {
    gridbaglayout app = new gridbaglayout();
}
}


Tidak ada komentar:

Posting Komentar