星期一, 9月 05, 2011

20110905 Java 練習小記


版面管理員 LayoutManager
  • 如果沒有設定, 預設是 邊框式版面 ( BorderLayout)
    • 如果沒有特別設定預設會將元件配置在中間 CENTER
    • 可以配置五個位置 東西南北中
      • BorderLayout.EAST
      • BorderLayout.WEST
      • BorderLayout.SOUTH
      • BorderLayout.NORTH
      • BorderLayout.CENTER
    • 按鈕的大小會隨著容器大小改變
  • 水流式版面 FlowLayout
    • 橫向排列的排版方式
    • 按鈕的大小 "不會" 隨著容器大小改變
  • 格狀版面 GridLayout
    • 可以指定橫向及縱向元件數量
    • setLayout(new GridLayout(rows,cols) 來指定 rows 列 cols 欄
    • 按鈕的大小會隨著容器大小改變

package chapter20;
//設定版面管理員

import java.awt.*;
import javax.swing.*;

public class Sample1 extends JApplet
{
private JLabel lb;
private JButton bt;
public void init()
{
//建立元件
lb = new JLabel("歡迎光臨");
bt = new JButton("購買");
//設定容器, 設定版面管理員
setLayout(new BorderLayout());
//新增到容器內
add(lb,BorderLayout.NORTH);//放在北邊
add(bt,BorderLayout.SOUTH);//放在南邊
}

}


package chapter20;
//調查邊框式版面 BorderLayer

import java.awt.*;

import javax.swing.*;


public class Sample2 extends JApplet
{
private JButton[] bt = new JButton[5]; //這邊用陣列的方式
public void init()
{
//建立元件
bt[0] = new JButton("N");
bt[1] = new JButton("S");
bt[2] = new JButton("C");
bt[3] = new JButton("W");
bt[4] = new JButton("E");
//設定容器
setLayout(new BorderLayout());
//新增到容器中
add(bt[0],BorderLayout.NORTH);
add(bt[1],BorderLayout.SOUTH);
add(bt[2],BorderLayout.CENTER);
add(bt[3],BorderLayout.WEST);
add(bt[4],BorderLayout.EAST);
}

}


package chapter20;
//水流式版面 FlowLayout

import java.awt.*;
import javax.swing.*;

public class Sample3 extends JApplet 
{
private JButton[] bt = new JButton[5];
public void init()
{
//建立元件
for(int i=0; i<bt.length; i++)
{
//利用for 迴圈來建立按鈕, 將int 轉型為 string
bt[i] = new JButton(Integer.toString(i));
}
//設定容器 這邊宣告 FlowLayout
setLayout(new FlowLayout());
//新增到容器中
for(int i=0; i<bt.length; i++)
{
add(bt[i]);
}
}

}


package chapter20;
//格狀版面 GridLayout

import java.awt.*;

import javax.swing.*;

public class Sample4 extends JApplet
{
private JButton[] bt = new JButton[6];
public void init()
{
//使用 for 迴圈建立按鈕
for(int i=0; i<bt.length; i++)
{
bt[i] = new JButton(Integer.toString(i));
}
//設定容器 如果不指定就是一欄一列
//setLayout(new GridLayout(row,cols));
setLayout(new GridLayout(2,3));

//新增到容器
for(int i=0; i < bt.length; i++)
{
add(bt[i]);
}
}
}


package chapter20;
//結合不同版面的容器

import java.awt.*;
import javax.swing.*;

public class Sample5 extends JApplet
{
private JButton[] bt = new JButton[10];
//使用面板 JPanel
private JPanel[] pn = new JPanel[2];
public void init()
{
//建立元件
for (int i=0; i < bt.length; i++)
{
bt[i] = new JButton(Integer.toString(i));
}
for (int i=0; i < pn.length; i++)
{
//這邊只要 new 一個 JPanel 就可以
pn[i] = new JPanel();
}
//設定容器
//設定格狀面板, 兩列 rows 一欄
setLayout(new GridLayout(2,1));
//在兩個面板中設定不同的格狀面板
pn[0].setLayout(new GridLayout(2,2));
pn[1].setLayout(new GridLayout(2,3));
//新增到容器內
//在第一個面板新增按鈕
for(int i=0; i<4; i++)
{
pn[0].add(bt[i]);
}
for(int i=4; i < bt.length; i++)
{
pn[1].add(bt[i]);
}
//在還沒有把面板加進來之前是不會顯示的
for (int i=0; i < pn.length; i++)
{
add(pn[i]);
}
}

}



沒有留言: