Glue:当glue插入在两组件间时,它会将两组件挤到最左与最右(或最上与最下),透明的glue将会占满整个中间的空间。
例:
在10与11行间加入下面一行程序:
baseBox.add(Box.createHorizontalGlue());
Strut:当你不想将A与B按钮挤到最旁边时,你可以使用Strut组件,来设置所需要的大小,但仅能限定一维的大小,例如限定水平或垂直高度。
例:在10与11行间加入下面一行程序:
baseBox.add(Box.createHorizontalStrut(50));//A,B之间间隔50个像素。
Rigid:这个透明组件跟Strut很像,但它可以设置二维的限制,也就是可以设置水平与垂直的限制宽度。
例:在10与11行间加入下面一行程序:
baseBox.add(Box.createRigidArea(new Dimension(50,50)));
为了将Rigid的高度功能显示出来,因此以pack()方法代替setSize()方法,11行替换为:f.pack();
若我们将高度再拉长,例如baseBox.add(Box.createRigidArea(new Dimension(50,50)));的Dimension改成(50,100),则两组件的上下空白将会增大,因为透明的Rigid组件高度增高了。
Filler:Filler是Box的inner class,它的功能跟Rigid很像,都可以指定长宽的大小限制,且Filler可以指定最大、较佳、最小的长宽大小,以下是Filler的构造函数:
Box.Filler(Dimension min,Dimension pref Dimension max)建立一个指定大小的Filler对象。
参数min表示最小的显示区域大小,如同上面的例子所示,若所设置最小区域的高度大于按钮A与B的高度,则按钮A与B的上方与下方将有空白出现。
pref表示较佳的显示区域大小。max表示最大的显示区域大小。
例:在10与11行间加入下面一行程序:
baseBox.add(new Box.Filler(new Dimension(50,50),
new Dimension(100,50),
new Dimension(200,50)));
Box类所提供的方法:
Static Component createGlue()构造一个Glue组件可向水平与垂直方向延伸
Static Box createHorizontalBox()构造一个水平排列的Box组件
Static Component createHorizontalGlue()构造一个水平的Glue组件
Static Component createHorizontalStrut(int width)构造一个水平的Strut组件
Static Component createRigidArea(Dimension d)构造一个Rigid组件
Static Box createVerticalBox()构造一个垂直排列的Box组件
Static Component createVerticalGlue()构造一个垂直的Glue组件
Static Component createVerticalStrut(int height)构造一个垂直的Strut组件
AccessibleContext getAccessibleContext()取得与JComponent相关边的AccessibleContext
Void setLayout(LayoutManager l)丢出AWTError,因为Box只能使用BoxLayout
代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class BoxLayoutDemo{
public BoxLayoutDemo(){
JFrame f=new JFrame();
Container contentPane=f.getContentPane();
Box baseBox=Box.createHorizontalBox();//先产生水平排列方式的Box组件,当作基底容器(BaseBox)
contentPane.add(baseBox);
/*产生垂直排列方式的Box组件来安置第一与第三个按钮
*/
Box vBox=Box.createVerticalBox();
JButton b=new JButton("first");
vBox.add(b);
b=new JButton("third");
b.setMaximumSize(new Dimension(100,150));
vBox.add(b);
baseBox.add(vBox);
/*产生垂直排列方式的Box组件来安置第二与另一个水平排列方式的Box组件
*/
Box vBox1=Box.createVerticalBox();
baseBox.add(vBox1);
b=new JButton("second");
b.setAlignmentX(Component.CENTER_ALIGNMENT);
b.setMaximumSize(new Dimension(300,50));
vBox1.add(b);
Box hBox=Box.createHorizontalBox();
vBox1.add(hBox);
/*将第四与最后一个按钮加入水平排列方式的Box组件中
*/
Box vBox2=Box.createVerticalBox();
vBox2.add(Box.createVerticalStrut(50));
vBox2.add(new JButton("fourth"));
vBox2.add(Box.createVerticalStrut(50));
hBox.add(vBox2);
Box vBox3=Box.createVerticalBox();
vBox3.add(Box.createVerticalGlue());
vBox3.add(new JButton("THis is the last button"));
hBox.add(vBox3);
f.setTitle("BoxLayout");
f.pack();
f.setVisible(true);
f.addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);
}
public static void main(String[] args){
BoxLayoutDemo b=new BoxLayoutDemo();
}
}
/****************************************************************************/
讲到这里相信大家已经初步入门,接下来就看大家自己了这是,这是整个电子书,我不过摘里面一点出来
在这里还要感谢电子书的作者!
下载/****************************************************************************/
地震让大伙知道:居安思危,才是生存之道。
posted on 2007-03-03 12:07
小寻 阅读(1186)
评论(0) 编辑 收藏 所属分类:
j2se/j2ee/j2me