[JavaSwing] GridLayoutの

あなたはすでにコンテナを知っているように (JFrameのような, JPanelの, ...) それにコントロールを格納するために使用, しかし彼らは、オブジェクトのデフォルトの配置は私の希望ではない持っているか持っていません. だから我々は、このレイアウトを達成するために使用する必要があります. つまりレイアウトのヘルプは、私たちは、論理的に、美しくコンテナコントロールの手配をすることができます.

コンテンツ
GridLayoutのを使用して作成

GridLayoutの ある レイアウト シンプルで使いやすいです, それは、同じサイズの行と列のテーブルに私たちのコンテナを分割しました.
私たちは、GridLayoutのを使用する場合、テーブルのような私たちのレイアウト, 例えばレイアウト JButtonの このようなコンピュータで.
GridLayoutの

使用例のGridLayoutの

このアプリケーションのために滞在、我々が作成されます。 1 のテーブル 4 JButtonのは中に置か JPanelの GridLayoutのを使用して. あなたは各の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のを使用
初期化メソッドのGridLayout
– GridLayoutの(): GridLayoutの作成と 1 行, 1 ポスト
– GridLayoutの(int型の行, int型COLS): 指定された行数と列数とGridLayouを作成します。
– GridLayoutの(int型の行, int型COLS, int型hgap, int型VGAP): 行数とのGridLayoutを作成します。, 列の数, 行と列の間の距離.

このコードでは、注意を命じます gridLayout.layoutContainer(mainPanel);, このコマンドは、コンテナを可能に (これはMainPanelであります) それを使用するレイアウト (ここでのGridLayoutのは、).

参照する: クラスGridLayoutの, GridLayoutのを使用