11.3.6 绝对定位

11.3.6 绝对定位

很多曾经学习过VBDelphi的读者可能比较怀念那种随意拖动控件的感觉,对Java的布局管理器非常不习惯。实际上,Java也提供了那种拖动控件的方式,即Java也可以对GUI组件进行绝对定位。

使用绝对定位的步骤

Java容器中采用绝对定位的步骤如下:

  1. Container的布局管理器设成nullsetLayout(null);
  2. 向容器中添加组件时,先调用setBounds()setSize()方法来设置组件的大小、位置,或者直接创建GUI组件时通过构造参数指定该组件的大小、位置,然后将该组件添加到容器中。

程序示例 绝对定位

下面程序示范了如何使用绝对定位来控制窗口中的GUI组件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.awt.*;

public class NullLayoutTest {
Frame f = new Frame("测试窗口");
Button b1 = new Button("第一个按钮");
Button b2 = new Button("第二个按钮");

public void init() {
// 设置使用null布局管理器
f.setLayout(null);
// 下面强制设置每个按钮的大小、位置
b1.setBounds(20, 30, 90, 28);
f.add(b1);
b2.setBounds(50, 45, 120, 35);
f.add(b2);
f.setBounds(50, 50, 200, 100);
f.setVisible(true);
}

public static void main(String[] args) {
new NullLayoutTest().init();
}
}

运行上面程序,会看到如图11.4所示的运行窗口。

图11.4

从图11.14中可以看出,使用绝对定位时甚至可以使两个按钮重叠,可见使用绝对定位确实非常灵活,而且很简捷,但这种方式是以丧失跨平台特性作为代价的。