[JavaSwing] GridLayout的

正如你所知道的集装箱 (作为JFrame中, 的JPanel, ...) 用于存储的控制其, 然而,他们可能会或可能不会默认对象的安排是不是我们所期望的. 因此,我们需要利用这样做布局. 换句话说,布局帮助下,我们可以安排容器以合理的方式和美丽.

内容
使用网格布局创建

GridLayout的布局 简单易用, 它把我们的大小相同的行和列的容器形式表.
我们使用GridLayout的布局时,我们喜欢的表, 比如布局 JButton的 在这样的电脑.
GridLayout的

例如,使用GridLayout的

在这个应用程序,我们将创建 1 表 4 JButton的放置在 的JPanel 使用网格布局. 当你点击每个JButton的,你可以改变的水平距离, 沿着它们之间. 下面有 2 的JLabel 显示水平距离 (hgap指定), 纵 (vGap) 它们之间.

package nguyenvanquan7826.GridLayout;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class MyGridLayout extends JFrame implements ActionListener {

	private JPanel mainPanel;
	private GridLayout gridLayout;
	private JLabel lbHGap;
	private JLabel lbVGap;
	final int dram = 3;

	public MyGridLayout() {
		createJFrame();
	}

	private void createJFrame() {
		// create JFrame
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(300, 400);
		// add content to JFrame
		mainPanel = createMainPanel();
		add(mainPanel);
		// display
		setLocationRelativeTo(null);
		setVisible(true);
	}

	private JPanel createMainPanel() {
		// create JPanel with GridLayout
		gridLayout = new GridLayout(3, 2, 5, 5);
		JPanel panel = new JPanel(gridLayout);
		// add four JButton to panel
		panel.add(createJButton("+ vGap"));
		panel.add(createJButton("- vGap"));
		panel.add(createJButton("+ hGap"));
		panel.add(createJButton("- hGap"));
		// create and add vGap and hGap JLabel to panel
		lbVGap = createJLabel("vGap = 5");
		lbHGap = createJLabel("hGap = 5");
		panel.add(lbVGap);
		panel.add(lbHGap);
		return panel;
	}

	// create JButton
	private JButton createJButton(String buttonName) {
		JButton btn = new JButton(buttonName);
		btn.addActionListener(this);
		return btn;
	}

	// create JLabel
	private JLabel createJLabel(String title) {
		JLabel lb = new JLabel(title);
		lb.setHorizontalAlignment(JLabel.CENTER);
		return lb;
	}

	// change vGap and hGap
	private void changeGap(int vGap, int hGap) {
		if (vGap >= 0 && hGap >= 0) {
			gridLayout.setVgap(vGap);
			gridLayout.setHgap(hGap);
			lbVGap.setText("vGap = " + vGap);
			lbHGap.setText("hGap = " + hGap);
			gridLayout.layoutContainer(mainPanel);
		}
	}

	@Override
	public void actionPerformed(ActionEvent evt) {
		String command = evt.getActionCommand();
		if (command == "+ vGap") { // augment vGap
			changeGap(gridLayout.getVgap() + dram, gridLayout.getHgap());
		}
		if (command == "- vGap") {// abatement vGap
			changeGap(gridLayout.getVgap() - dram, gridLayout.getHgap());
		}
		if (command == "+ hGap") {// augment hGap
			changeGap(gridLayout.getVgap(), gridLayout.getHgap() + dram);
		}
		if (command == "- hGap") {// abatement hGap
			changeGap(gridLayout.getVgap(), gridLayout.getHgap() - dram);
		}
	}

	public static void main(String[] args) {
		new MyGridLayout();
	}
}

使用网格布局
构造函数方法网格布局
– GridLayout的(): 创建网格布局与 1 排, 1 职位
– GridLayout的(INT行, INT COLS): 创建GridLayou指定的行和列数
– GridLayout的(INT行, INT COLS, 参数hgap, INT vgap): 创建网格布局的货物, 列数, 的行和列之间的距离.

在这段代码中你指挥关注 gridLayout.layoutContainer(mainPanel中);, 该命令允许集装箱 (这是在mainPanel中) 使用它布局 (这里是网格布局).

请参阅: 一流的网格布局, 使用网格布局