Null无布局

无布局(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,按钮的位置和大小不变:

相关内容

FlowLayout

BorderLayout

GridBagLayout