可以将布局管理器设置为空,而不是使用控制容器内所有组件的大小和位置的布局管理器。于是,每个组件使用其边界来控制它自己的位置和大小。
如果右键单击容器并设置显示网格选项,则可以将组件拖动、放下以及移至网格上的某一点,从而使您能够将组件与一些位置对齐而无需使用对齐操作:
也可以在一开始将布局管理器设置为空,然后更改为某个布局(如 GridBagLayout)以便让 Visual Editor for Java 计算约束设置。让每个组件控制其大小和位置的优点是可以指定 x、y、宽度和高度并确保在运行时始终使用它们。使用固定大小和高度的缺点是:即使用户调整了应用程序大小,或者如果组件(如按钮或复选框)上的标注根据用户的字体或语言环境更改了大小,固定的大小和高度也不会更改。
要在 Visual Editor for Java 中查看此行为,可以在“属性”视图中使用 layout 属性的值列表并选择空。
当将现有容器的布局管理器设置为空时,“设计”视图在外观上不会更改。Visual Editor 将计算每个组件的当前边界并显式地设置它们。例如,假定您有一个使用 FlowLayout 布局管理器并且包含 JLabel bean 的容器。在将布局设置为空之前,初始化 JLabel bean 的代码将只设置它的标注属性,如下所示:
private javax.swing.JLabel getIvjJLabel(){ if(ivjJLabel == null) { ivjJLabel = new javax.swing.JLabel(); ivjJLabel.setText("JLabel"); } return ivjJLabel; }
如果接着使用“属性”视图来将布局管理器更改为 null,则代码看起来将如下:
private javax.swing.JLabel getIvjJLabel(){ if(ivjJLabel == null) { ivjJLabel = new javax.swing.JLabel(); ivjJLabel.setBounds(59, 10, 38, 15); ivjJLabel.setText("JLabel"); } return ivjJLabel; }
在同一示例中,一将布局管理器设置为空,每个组件的“属性”视图就会显示界限、大小和位置的值。当父容器使用任何其它布局管理器时,这些值不会显示,这是因为当布局管理器控制位置和大小时,组件属性不会更改。
当将容器的布局设置为空时,在“设计”视图中,每个组件的控制柄将允许调整组件大小。还可以在从选用板添加 bean 时调整 bean 的大小。只要在将 bean 放置在“设计”视图中时通过按住鼠标左键并拖动鼠标指针直到 bean 具有需要的大小就可以了。目标反馈矩形显示初始大小。在任何其它布局管理器中,都只允许您移动或添加组件。
相关概念
布局管理器和容器