无布局(Null)是通过设置坐标的方式控制布局,界面放大或缩小时,组件的大小和位置不会发生变化。空布局采用setBounds()方法设置组件在容器中的位置和大小:
setBounds(int x,int y,int width,int height)
组件所占区域为矩形,参数 x,y 是组件的左上角在容器中的位置坐标;参数 weight,height 是组件的宽和高。
设置组件相关的其他方法:
- getSize().width:获取组件的宽度;
- getSize().height:获取组件的高度;
- setVgap(ing vgap):设置组件之间的垂直间距;
- setHgap(int hgap):设置组件之间的水平间距。
示例
在JPanel中,以无布局的方式添加苹果A、梨、苹果B三个按钮,通过add()方法添加按钮,再调用setBounds()方法设置组件在容器中的位置和按钮的大小。具体实现代码如下:
package com.supermap.desktop.samplecode.layout.nulllayout;
import javax.swing.*;
public class MyNullLayout extends JFrame {
private JButton apple1 = new JButton("苹果A");
private JButton pear = new JButton("梨");
private JButton apple2 = new JButton("苹果B");
public MyNullLayout() {
JPanel panel = (JPanel) this.getContentPane();
panel.setLayout(null);
apple1.setBounds(50, 1, 100, 20);
pear.setBounds(150, 1, 100, 20);
apple2.setBounds(250, 1, 100, 20);
panel.add(apple1);
panel.add(pear);
panel.add(apple2);
}
public static void main(String[] args) {
MyNullLayout frame = new MyNullLayout();
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
示例代码运行结果如下,拉大或缩小Panel,按钮的位置和大小不变: