2013年2月14日 星期四

Layout - BorderLayout, FlowLayout, GridLayout


BorderLayout


BorderLayout - Example

除了常見的東西南北中發白之外 再加上Hgap與VGap兩個屬性


import java.awt.BorderLayout;
import java.awt.Container;

import javax.swing.JButton;
import javax.swing.JFrame;


public class TestBorderLayout {
public static void main(String[] args) {
JFrame frame = new JFrame("BorderLayout");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container cp = frame.getContentPane();

BorderLayout layout = new BorderLayout();
layout.setHgap(100);
layout.setVgap(30);
cp.setLayout(layout);

JButton north = new JButton("North");
JButton south = new JButton("South");
JButton east = new JButton("East");
JButton west = new JButton("West");
JButton center = new JButton("Center");

cp.add(north, BorderLayout.NORTH);
cp.add(south, BorderLayout.SOUTH);
cp.add(east, BorderLayout.EAST);
cp.add(west, BorderLayout.WEST);
cp.add(center, BorderLayout.CENTER);

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

}





FlowLayout - Example

預設值除了Hgap與VGrap外多了一個Alignment


import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;


public class TestFlowLayout {
public static void main(String[] args) {
JFrame frame = new JFrame("FlowLayout");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container cp = frame.getContentPane();

FlowLayout layout = new FlowLayout(FlowLayout.CENTER, 10, 10); 
// DEFAULT is (CENTER, 5, 5)
cp.setLayout(layout);
JButton btn[] = new JButton[10];
for(int i = 0 ; i < btn.length; i++){
btn[i] = createBtn(i);
cp.add(btn[i]);
}
frame.setVisible(true);
frame.pack();
}

private static JButton createBtn(int i) {
JButton btn = new JButton();
Color bg = new Color(i*256/10,i*256/10,i*256/10);
btn.setText(""+(i*256/10));
btn.setForeground(bg);
return btn;
}
}

靠左,中,右對齊


GridLayout 

不得不說的事情是當我們放元件進去的時候是無法指定他放在grid的什麼位置的
因為這個layout的排版方式就是將parent裡面的所有元件拿來依照指定的gird size來排位置


import java.awt.Container;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;


public class TestGridLayout {
public static void main(String[] args) {
JFrame frame = new JFrame("FlowLayout");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container cp = frame.getContentPane();

// DEFAULT is (1, 0, 0, 0);
GridLayout layout = new GridLayout(5, 5, 10, 10);
cp.setLayout(layout);
for(int i = 0 ; i < 25 ; i++){
if(i%2 == 0){
cp.add(new JButton(""+i));
}else{
cp.add(new JLabel());
}
}
frame.setVisible(true);
frame.pack();
}

}


沒有留言:

張貼留言