《java圖形界面的布局設(shè)計(jì).ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《java圖形界面的布局設(shè)計(jì).ppt(13頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、6.5 圖形界面的布局設(shè)計(jì),每一個(gè)容器組件都有一個(gè)默認(rèn)的布局管理方式,也可以用setLayout方法來設(shè)置其他布局管理器。一旦確定了布局管理方式,容器組件就可以用add方法加入組件。 布局管理器用來確定組件在容器中的位置和大小,AWT中定義了布局管理器接口LayoutManager的實(shí)現(xiàn)類來實(shí)現(xiàn)此功能。,LayoutManager的實(shí)現(xiàn)類:,FlowLayout BorderLayout GridLayout GridBagLayout CardLayout
2、 null,,6.5.1 FlowLayout布局管理器,FlowLayout是一種最簡單的布局管理,是Panel的默認(rèn)布局。它以流式自左向右、自上而下地放置容器中的組件,其默認(rèn)方式為居中對齊方式,也可以手工設(shè)置左對齊或右對齊。,創(chuàng)建默認(rèn)的FlowLayout布局管理器: FlowLayout() 以指定的對齊方式創(chuàng)建: FlowLayout(int) 以指定的對齊方式及間距創(chuàng)建FlowLayout布局管理器: FlowLayout(int,int,int),FlowLayout.LEFT FlowLayout.RIGHT FlowLayout.CENTER,對齊方式,組件行間距,
3、組件列間距,6.5.2 BorderLayout布局管理器,BorderLayout是Frame和Dialog的默認(rèn)布局。它將整個(gè)容器分為東、西、南、北、中5個(gè)部分,加入組件時(shí)需要指明放置的位置。 創(chuàng)建默認(rèn)的BorderLayout布局管理器: BorderLayout() 以指定的行、列間距創(chuàng)建BorderLayout布局管理器: BorderLayout(int,int),組件行間距,組件列間距,BorderLayout的主要方法,6.5.3 GridLayout布局管理器,GridLayout布局將容器劃分成m行x n列大小相同的格子,組件放在格子中。 創(chuàng)建默認(rèn)的GridLayout
4、布局,所有組件在一行顯示: GridLayout() 以指定的行數(shù)、列數(shù)創(chuàng)建GridLayout布局: GridLayout(int,int) 以指定的行數(shù)、列數(shù)、行間距、列間距創(chuàng)建布局: GridLayout(int,int,int,int),GridLayout的主要方法,import java.applet.*; import java.awt.*; import java.awt.event.*; public class TestGridLayout extends Applet public void init() setLayout(new GridLayout(5,6
5、)); //GridLayout布局策略5行6列30網(wǎng)格 for(int i=0;i=0) if((int)(Math.random()*100)=50) add(new Button(Integer.toString(i*6+j)));//隨機(jī)加入按鈕 else add(new Label());//隨機(jī)加入空白 ,6.5.4 GridBagLayout布局管理器,GridBagLayout布局將容器劃分成很多矩形小格子,每個(gè)組件可以占用一個(gè)或多個(gè)單元,從而可以指定每個(gè)組件所占空間的大小 創(chuàng)建默認(rèn)的GridBagLayout布局: GridBagLayout() 通過設(shè)
6、置和組件有關(guān)的GridContaints對象的屬性來分配每個(gè)組件,然后調(diào)用GridBagLayout的setContaints方法將組件與GridContaints對象關(guān)聯(lián),最后將組件加入容器中。,GridContaints對象的常用屬性,(1)gridwidth, gridheight 這兩個(gè)參數(shù)決定組件所占空間單元的行數(shù)和列數(shù),默認(rèn)值為1。 (2)fill 當(dāng)組件顯示區(qū)域比其尺寸大時(shí),該參數(shù)確定怎樣重新定義組件大小,其默認(rèn)值為: GridBagContaints.NORE (不重新定義大?。? 還可以為: GridBagContaints.Horizontal (水平方向拉伸填滿) G
7、ridBagContaints.Vertical (垂直方向拉伸填滿) GridBagContaints.BOTH (兩個(gè)方向拉伸填滿) (3)weightx, weighty 指定分配多余空間的方式,6.5.5 CardLayout布局管理器,CardLayout布局將容器中的組件象撲克牌一樣排列,每次只能顯示最上面的一張。 創(chuàng)建默認(rèn)的CardLayout布局: CardLayout() 以指定的行間距、列間距創(chuàng)建GridLayout布局: CardLayout(int,int) 將組件(通常是Panel)以CardLayout加入時(shí),需要指定一個(gè)名字,如:add(“ONE”, Panel),CardLayout的主要方法,6.5.6 null 布局管理器,null 布局管理器將主動(dòng)權(quán)交給用戶,由用戶使用坐標(biāo)系統(tǒng)來放置每個(gè)組件,即調(diào)用組件的setBounds()方法來設(shè)置位置和大小。 如: this.setLayout(null); Label L1=new Label(“test”); L3.setBounds(new Rectangle(108, 2, 98, 37)); Add(L3);,X 、y 坐標(biāo)、長、寬,