论坛首页 Java企业应用论坛

java app的布局管理器BoxLayout

浏览 5782 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-05-13  
   布局管理器的作用大家应该都清楚,我们常用的布局管理器BorderLayout、FlowLayout、

GridBagLayout、BoxLayout以及null(空布局)等等。

    做一些简单的布局我们习惯于BorderLayout、FlowLayout,但是对于复杂的布局还有其缺陷

性。其中GridBagLayout是一个非常灵活的布局管理器,但是也是最复杂;同时也由于其复杂性

我们只是对其叹而观之,真正用到的时候就不考虑用它了。空布局是使组件固定在版面上,但是

窗口变化是不会随之而相应的变化,同时当两个组件的相互覆盖时,可能会隐藏其中一个组件。

BoxLayout功能上同GridBagLayout一样强大,而且更加易用。BoxLayout 将几个组件以水平或垂

直的方式组合在一起,其中各个组件的大小随窗口的大小变化而变化。
    BoxLayout的两种排列:
X_AXIS  将以水平方式排列。
Y_AXIS  将以垂直方式排列。
   
    通常BorderLayout作最外面容器的布局,然后内层用BoxLayout。组合其他的布局可以达到

GridBagLayout的效果,而且不会很简单。Box类的很多静方法帮组产生各种布局。

简单的代码片段:
  
Box b4 = Box.createHorizontalBox();
b4.add(Box.createHorizontalStrut(25));
write_findPanel.setBorder(BorderFactory.createTitledBorder("精确条件"));
b4.add(write_findPanel);
	write_findPanel.setOpaque(false);
	b4.add(Box.createHorizontalStrut(25));
	b4.add(Box.createHorizontalGlue());
	findPanel.add(b4);
	write_findPanel.setLayout(new BoxLayout(write_findPanel,BoxLayout.Y_AXIS));
		
	Box box41 = Box.createHorizontalBox();
         Box box42 = Box.createHorizontalBox();
		    box41.add(Box.createHorizontalStrut(25));
		    box41.add(numberLabel);
		    box41.add(Box.createHorizontalStrut(15));
		    box41.add(numberField);
		    box41.add(Box.createHorizontalStrut(25));
		    box42.add(Box.createHorizontalStrut(25));
		    box42.add(bynameLabel);
		    box42.add(Box.createHorizontalStrut(15));
		    box42.add(bynameField);
		    box42.add(Box.createHorizontalStrut(25));
	write_findPanel.add(Box.createVerticalStrut(25));
	write_findPanel.add(box41);
	write_findPanel.add(Box.createVerticalStrut(5));
	write_findPanel.add(box42);
	write_findPanel.add(Box.createVerticalStrut(45));
	write_findPanel.add(Box.createVerticalGlue());

论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics