在使用BorderLayout的時(shí)候,如果容器的大小發(fā)生變化,其變化規(guī)律為:組件的相對(duì)位置不變,大小發(fā)生變化。例如容器變高了,則North、South區(qū)域不變,West、Center、East區(qū)域變高;如果容器變寬了,West、East區(qū)域不變,North、Center、South區(qū)域變寬。不一定所有的區(qū)域都有組件,如果四周的區(qū)域(West、East、North、South區(qū)域)沒有組件,則由Center區(qū)域去補(bǔ)充,但是如果Center區(qū)域沒有組件,則保持空白,其效果如下幾幅圖所示:
North區(qū)域缺少組件
North和Center區(qū)域缺少組件
3. GridLayout
使容器中各個(gè)組件呈網(wǎng)格狀布局,平均占據(jù)容器的空間。
例5.6
import java.awt.*;
public class ButtonGrid {
public static void main(String args[]) {
Frame f = new Frame("GridLayout");
f.setLayout(new GridLayout(3,2));
//容器平均分成3行2列共6格
f.add(new Button("1")); //添加到第一行的第一格
f.add(new Button("2")); //添加到第一行的下一格
f.add(new Button("3")); //添加到第二行的第一格
f.add(new Button("4")); //添加到第二行的下一格
f.add(new Button("5")); //添加到第三行的第一格
f.add(new Button("6")); //添加到第三行的下一格
f.setSize(200,200);
f.setVisible(true);
}
} 來源:www.examda.com
5.1.4 LayoutManager 布局管理器(2)
4. CardLayout
CardLayout布局管理器能夠幫助用戶處理兩個(gè)以至更多的成員共享同一顯示空間,它把容器分成許多層,每層的顯示空間占據(jù)整個(gè)容器的大小,但是每層只允許放置一個(gè)組件,當(dāng)然每層都可以利用Panel來實(shí)現(xiàn)復(fù)雜的用戶界面。牌布局管理器(CardLayout)就象一副疊得整整齊齊的撲克牌一樣,有54張牌,但是你只能看見最上面的一張牌,每一張牌就相當(dāng)于牌布局管理器中的每一層。
例5.7
import java.awt.*;
import java.awt.event.*; //事件處理機(jī)制,下一節(jié)的內(nèi)容
public class ThreePages implements MousListener {
CardLayout layout=new CardLayout(); //實(shí)例化一個(gè)牌布局管理器對(duì)象
Frame f=new Frame("CardLayout");
Button page1Button;
Label page2Label; //Label是標(biāo)簽,實(shí)際上是一行字符串
TextArea page3Text; //多行多列的文本區(qū)域
Button page3Top;
Button page3Bottom;
public static void main(String args[])
{ new ThreePages().go(); }
Public void go()
{ f.setLayout(layout); //設(shè)置為牌布局管理器layout
f.add(page1Button=new Button("Button page"),"page1Button"); /*第二個(gè)參數(shù)"page1Button"表示的是你對(duì)這層牌所取的名字*/
page1Button.addMouseListener(this); //注冊(cè)監(jiān)聽器
f.add(page2Label=new Label("Label page"),"page2Label");
page2Label.addMouseLisener(this); //注冊(cè)監(jiān)聽器
Panel panel=new Panel();
panel.setLayout(new BorderLayout());
panel.add(page3Text=new TextArea("Composite page"),"Center");
page3Text.addMouseListener(this);
panel.add(page3Top=new Button("Top button") , "North");
page3Top.addMouseListener(this);
panel.add(page3Bottom=new Button("Bottom button") ,"South");
page3Bottom.addMouseListener(this);
f.add(panel,"panel");
f.setSize(200,200);
f.setVisible(true);
}
……
}
North區(qū)域缺少組件
North和Center區(qū)域缺少組件
3. GridLayout
使容器中各個(gè)組件呈網(wǎng)格狀布局,平均占據(jù)容器的空間。
例5.6
import java.awt.*;
public class ButtonGrid {
public static void main(String args[]) {
Frame f = new Frame("GridLayout");
f.setLayout(new GridLayout(3,2));
//容器平均分成3行2列共6格
f.add(new Button("1")); //添加到第一行的第一格
f.add(new Button("2")); //添加到第一行的下一格
f.add(new Button("3")); //添加到第二行的第一格
f.add(new Button("4")); //添加到第二行的下一格
f.add(new Button("5")); //添加到第三行的第一格
f.add(new Button("6")); //添加到第三行的下一格
f.setSize(200,200);
f.setVisible(true);
}
} 來源:www.examda.com
5.1.4 LayoutManager 布局管理器(2)
4. CardLayout
CardLayout布局管理器能夠幫助用戶處理兩個(gè)以至更多的成員共享同一顯示空間,它把容器分成許多層,每層的顯示空間占據(jù)整個(gè)容器的大小,但是每層只允許放置一個(gè)組件,當(dāng)然每層都可以利用Panel來實(shí)現(xiàn)復(fù)雜的用戶界面。牌布局管理器(CardLayout)就象一副疊得整整齊齊的撲克牌一樣,有54張牌,但是你只能看見最上面的一張牌,每一張牌就相當(dāng)于牌布局管理器中的每一層。
例5.7
import java.awt.*;
import java.awt.event.*; //事件處理機(jī)制,下一節(jié)的內(nèi)容
public class ThreePages implements MousListener {
CardLayout layout=new CardLayout(); //實(shí)例化一個(gè)牌布局管理器對(duì)象
Frame f=new Frame("CardLayout");
Button page1Button;
Label page2Label; //Label是標(biāo)簽,實(shí)際上是一行字符串
TextArea page3Text; //多行多列的文本區(qū)域
Button page3Top;
Button page3Bottom;
public static void main(String args[])
{ new ThreePages().go(); }
Public void go()
{ f.setLayout(layout); //設(shè)置為牌布局管理器layout
f.add(page1Button=new Button("Button page"),"page1Button"); /*第二個(gè)參數(shù)"page1Button"表示的是你對(duì)這層牌所取的名字*/
page1Button.addMouseListener(this); //注冊(cè)監(jiān)聽器
f.add(page2Label=new Label("Label page"),"page2Label");
page2Label.addMouseLisener(this); //注冊(cè)監(jiān)聽器
Panel panel=new Panel();
panel.setLayout(new BorderLayout());
panel.add(page3Text=new TextArea("Composite page"),"Center");
page3Text.addMouseListener(this);
panel.add(page3Top=new Button("Top button") , "North");
page3Top.addMouseListener(this);
panel.add(page3Bottom=new Button("Bottom button") ,"South");
page3Bottom.addMouseListener(this);
f.add(panel,"panel");
f.setSize(200,200);
f.setVisible(true);
}
……
}