當前位置:編程學習大全網 - 源碼下載 - 誰能解釋壹下Java中GridBagLayout的使用?

誰能解釋壹下Java中GridBagLayout的使用?

GridLayout的使用:

GridLayout的類層次結構圖:

java.lang.Object

--java.awt.GridLayout

GridLayout比FlowLayout多了行和列的設置,也就是說妳要先設置GridLayout***有幾行

幾列,就如同二維平面壹般,然後妳加

進去的組件會先填第壹行的格子,然後再從第二行開始填,依此類扒,就像是壹個個的

格子壹般。而且GridLayout會將所填進去組

件的大小設為壹樣。

構造函數:GridLayout()建立壹個新的GridLayout,默認值是1行1列。

GridLayout(int rows,int

cols)建立壹個幾行幾列的GridLayout.

GridLayout(int rows,int cols, int hgap,int

vgap)建立壹個幾行幾列的GridLayout,並設置組件的間距。

例子:GridLayoutDemo.java

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class CardLayoutDemo implements ActionListener{

JPanel p1,p2,p3,p4;

int i=1;

JFrame f;

public CardLayoutDemo(){

f=new JFrame();//當做top-level組件

Container contentPane=f.getContentPane();

contentPane.setLayout(new GridLayout(2,1));

p1=new JPanel();

Button b=new Button("Change Card");

b.addActionListener(this);//當按下"Change

Card"時,進行事件監聽,將會有系統操作產生。

p1.add(b); file://處理操作在52-64行.

contentPane.add(p1);

p2=new JPanel();

p2.setLayout(new FlowLayout());

p2.add(new JButton("first"));

p2.add(new JButton("second"));

p2.add(new JButton("third"));

p3=new JPanel();

p3.setLayout(new GridLayout(3,1));

p3.add(new JButton("fourth"));

p3.add(new JButton("fifth"));

p3.add(new JButton("This is the last button"));

p4=new JPanel();

p4.setLayout(new CardLayout());

p4.add("one",p2);

p4.add("two",p3);

/*要顯示CardLayout的卡片,除了用show(Container parent,String

name)這個方法外

*,也可試試first(Container),next(Container),previous(Container),last

(Container)這

*四個方法,壹樣可以達到顯示效果。

*/

((CardLayout)p4.getLayout()).show(p4,"one");

contentPane.add(p4);

f.setTitle("CardLayout");

f.pack();

f.setVisible(true);

f.addWindowListener(

new WindowAdapter(){

public void windowClosing(WindowEvent e){

System.exit(0);

}

}

);

}

public void actionPerformed(ActionEvent event){

switch(i){

case 1:

((CardLayout)p4.getLayout()).show(p4,"two");

break;

case 2:

((CardLayout)p4.getLayout()).show(p4,"one");

break;

}

i++;

if (i==3) i=1;

f.validate();

}

public static void main(String[] args){

new CardLayoutDemo();

}

}

1-3-5:GridBagLayout的使用:是java中最有彈性但也是最復雜的壹種版面管理器。它

只有壹種構造函數,但必須配合

GridBagConstraints才能達到設置的效果。

GridBagLayout的類層次結構圖:

java.lang.Object

--java.awt.GridBagLayout

構造函數:

GirdBagLayout()建立壹個新的GridBagLayout管理器。

GridBagConstraints()建立壹個新的GridBagConstraints對象。

GridBagConstraints(int gridx,int gridy,int

gridwidth,int gridheight,double weightx,double weighty,

int anchor,int fill, Insets

insets,int ipadx,int ipady)建立壹個新的GridBagConstraints對象

,並指定其參數的值。

參數說明:

gridx,gridy:設置組件的位置,gridx設置為GridBagConstraints.RELATIVE代表此組件

位於之前所加入組件的右邊。

若將gridy設置為GridBagConstraints.RELATIVE代表此組件位於以前所加入組件的下

面。建議定義出

gridx,gridy的位置,以便以後維護程序。表示放在幾行幾列,gridx=0,gridy=0時放在

0行0列。

gridwidth,gridheight:用來設置組件所占的單位長度與高度,默認值皆為1。妳可以使

用GridBagConstraints.REMAINDER常

量,代表此組件為此行或此列的最後壹個組件,而且會占據所

有剩余的空間。

weightx,weighty:用來設置窗口變大時,各組件跟著變大的比例,當數字越大,表示組

件能得到更多的空間,默認值皆為0。

anchor:

當組件空間大於組件本身時,要將組件置於何處,有CENTER(默認值)、NORTH、

NORTHEAST、EAST、SOUTHEAST、

WEST、NORTHWEST可供選擇。

insets:設置組件之間彼此的間距,它有四個參數,分別是上,左,下,右,默認為

(0,0,0,0).

ipadx,ipady:設置組件內的間距,默認值為0。

我們以前提過,GridBagLayout裏的各種設置都必須通過GridBagConstraints,因此當我

們將GridBagConstraints的參數都設置

好了之後,必須new壹個GridBagConstraints的對象出來,以便GridBagLayout使用。

例子:

GridBagLayoutDemo.java

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class GridBagLayoutDemo{

public GridBagLayoutDemo(){

JButton b;

GridBagConstraints c;

int

gridx,gridy,gridwidth,gridheight,anchor,fill,ipadx,ipady;

double weightx,weighty;

Insets inset;

JFrame f=new JFrame();

GridBagLayout gridbag=new GridBagLayout();

Container contentPane=f.getContentPane();

contentPane.setLayout(gridbag);

b=new JButton("first");

gridx=0;

gridy=0;

gridwidth=1;

gridheight=1;

weightx=10;

weighty=1;

anchor=GridBagConstraints.CENTER;

fill=GridBagConstraints.HORIZONTAL;

inset=new Insets(0,0,0,0);

ipadx=0;

ipady=0;

c=new

GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,

fill,inset,ipadx,ipady);

gridbag.setConstraints(b,c);

contentPane.add(b);

b=new JButton("second");

gridx=1;

gridy=0;

gridwidth=2;

gridheight=1;

weightx=1;

weighty=1;

anchor=GridBagConstraints.CENTER;

fill=GridBagConstraints.HORIZONTAL;

inset=new Insets(0,0,0,0);

ipadx=50;

ipady=0;

c=new

GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,

fill,inset,ipadx,ipady);

gridbag.setConstraints(b,c);

contentPane.add(b);

b=new JButton("third");

gridx=0;

gridy=1;

gridwidth=1;

gridheight=1;

weightx=1;

weighty=1;

anchor=GridBagConstraints.CENTER;

fill=GridBagConstraints.HORIZONTAL;

inset=new Insets(0,0,0,0);

ipadx=0;

ipady=50;

c=new

GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,

fill,inset,ipadx,ipady);

gridbag.setConstraints(b,c);

contentPane.add(b);

b=new JButton("fourth");

gridx=1;

gridy=1;

gridwidth=1;

gridheight=1;

weightx=1;

weighty=1;

anchor=GridBagConstraints.CENTER;

fill=GridBagConstraints.HORIZONTAL;

inset=new Insets(0,0,0,0);

ipadx=0;

ipady=0;

c=new

GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,

fill,inset,ipadx,ipady);

gridbag.setConstraints(b,c);

contentPane.add(b);

b=new JButton("This is the last button");

gridx=2;

gridy=1;

gridwidth=1;

gridheight=2;

weightx=1;

weighty=1;

anchor=GridBagConstraints.CENTER;

fill=GridBagConstraints.HORIZONTAL;

inset=new Insets(0,0,0,0);

ipadx=0;

ipady=50;

c=new

GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,

fill,inset,ipadx,ipady);

gridbag.setConstraints(b,c);

contentPane.add(b);

f.setTitle("GridBagLayout");

f.pack();

f.setVisible(true);

f.addWindowListener(

new WindowAdapter(){

public void windowClosing(WindowEvent e){

System.exit(0);

}

}

);

}

public static void main(String[] args){

new GridBagLayoutDemo();

}

}

  • 上一篇:我是個學生,想學壹些電腦配置知識!我的QQ120728909,希望有個高手能教教我。先謝謝哦
  • 下一篇:瘋狂回答源代碼
  • copyright 2024編程學習大全網