Swing常用布局管理器

一、绝对布局

在Swing中,除了使用布局管理器之外还可以使用绝对布局。绝对布局,就是硬性指定组件在容器中的位置和大小,可以使用绝对坐标的方式来指定组件的位置。

使用绝对布局的步骤如下:

(1)使用Container.setLayout(null)方法取消布局管理器

(2)使用Component.setBounds()方法设置每个组件的大小和位置

示例如下:

import java.awt.Container;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.WindowConstants;

public class AbsolutePosition extends JFrame{
	public AbsolutePosition() {
		setTitle("本窗体使用绝对布局");
		setLayout(null);
		setBounds(0, 0, 200, 150);
		Container c = getContentPane();
		JButton b1 = new JButton("按钮1");
		JButton b2 = new JButton("按钮2");
		b1.setBounds(10,30,80,30);
		b2.setBounds(60,70,100,20);
		c.add(b1);
		c.add(b2);
		setVisible(true);
		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	}
	public static void main(String args[]) {
		new AbsolutePosition();
	}
}

运行结果如下图所示:

 

二、流布局管理器

流(FlowLayout)布局管理器是最基本的布局管理器,在整个容器中的布局正如其名,像“流”一样从左到右摆放组件,直到占据了这一行的所有空间,然后再向下移动一行。默认情况下,组件在每一行都是居中排列的,但是通过设置也可以更改组件在每一行上的排列位置。

FlowLayout类中具有以下常用的构造方法:

(1)public FlowLayout()

(2)public FlowLayout(int alignment)

(3)public FlowLayout(int alignment,int horizGap,int vertGap)

构造方法中的alignment参数表示使用流布局管理器后组件在每一行的具体摆放位置,有三个值可以选择:

(1)FlowLayout.LEFT=0

(2)FlowLayout.CENTER=1

(3)FlowLayout.RIGHT=2

构造方法的horizGap和certGap参数表示分别以像素为单位指定组件之间的水平间隔与垂直间隔

示例如下:

import java.awt.Button;
import java.awt.Container;
import java.awt.FlowLayout;

import javax.swing.JFrame;
import javax.swing.WindowConstants;

public class FlowLayoutPosition extends JFrame{
	public FlowLayoutPosition() {
		setTitle("本窗体使用流布局管理器");
		Container c = getContentPane();
		setLayout(new FlowLayout(2,10,10));
		for(int i=0;i<10;i++) {
			c.add(new Button("button"+i));
		}
		setSize(300,200);
		setVisible(true);
		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	}
	public static void main(String args[]) {
		new FlowLayoutPosition();
	}
}

上述示例运行结果如下:

 

三、边界布局管理器

BorderLayout类的主要成员变量
成员变量 含义
FlowLayout.NOETH 在容器中添加组件时,组件置于顶端
FlowLayout.SOUTH 在容器中添加组件时,组件置于底部
FlowLayout.EAST 在容器中添加组件时,组件置于右端
FlowLayout.WEST 在容器中添加组件时,组件置于左端
FlowLayout.CENTER 在容器中添加组件时,组件置于中间开始填充,直到与其他组件边界相连

 

 

 

 

 

 

 

示例如下:

import java.awt.BorderLayout;
import java.awt.Container;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.WindowConstants;

public class BorderLayoutPosition extends JFrame{
	String[] border = {
			BorderLayout.CENTER,BorderLayout.EAST,
			BorderLayout.SOUTH,BorderLayout.WEST,
			BorderLayout.NORTH
	};
	String[] buttonName = {"center button","north button",
			"south button","west button","east button"
	};
	public BorderLayoutPosition() {
		setTitle("整个窗体使用边界布局管理器");
		Container c = getContentPane();
		setLayout(new BorderLayout());
		for(int i=0;i<border.length;i++) {
			c.add(border[i],new JButton(buttonName[i]));
		}
		setSize(350,200);
		setVisible(true);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
	}
	public static void main(String args[]) {
		new BorderLayoutPosition();
	}
}

上述示例运行结果如下图:

 

四、网格布局管理器

网格(GridLayout)布局管理器将容器划分为网格,所以组件可以按行和列进行排列。在网格布局管理器中,每一个组件的大小都相同,并且网格中空格的个数由网格的行数和列数决定,网格布局管理器主要有以下两个常用方法:

(1)public GridLayout(int rows,int columns)

(2)public GridLayout(int rows,int columns,int horizGap,int vertGap)

上述方法中rows和columns参数代表网格的行数与列数,这两个参数只有一个可以为0;参数horizGap和VertGap指定网格之间的间隔,第一个为网格之间的水平间隔,第二个为网格之间的垂直间隔

示例如下:
 

import java.awt.*;

import javax.swing.*;

public class GridLayoutPosition extends JFrame{
	public GridLayoutPosition() {
		Container c = getContentPane();
		setLayout(new GridLayout(7,3,5,5));
		for(int i=0;i<=20;i++) {
			c.add(new JButton("button"+i));
		}
		setSize(300,300);
		setTitle("这是一个使用网格布局管理器的窗体");
		setVisible(true);
		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	}
	public static void main(String args[]) {
		new GridLayoutPosition();
	}
}

上述示例运行结果如下:

发布了61 篇原创文章 · 获赞 1 · 访问量 1333

猜你喜欢

转载自blog.csdn.net/qq_29440983/article/details/103693227