[JavaSwing] JavaでのBoxLayout

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

コンテンツ
コンテナのBoxLayoutを作成して置きます

レイアウトは、水平または垂直の列の上にコントロールを配置するために私達を可能にしBoxlayout.
FlowLayoutので、我々は水平方向の行に配置された場合には、他の, コントロールは自動的に彼らのために十分なスペースを改行でない場合はありません.

例えば、BoxLayoutを作成して使用

私たちは、JButtonの一連のを持っています, 含めて 1 私たちは、垂直、またはその逆に、水平からの表示を切り替えることができるようになるとのJButtonを変更.

package nguyenvanquan7826.BoxLayout;

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

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

public class MyBoxLayout extends JFrame {
	private JPanel mainPanel;
	private BoxLayout boxLayout;
	private boolean axis = true;

	public MyBoxLayout() {
		createJFrame();
	}

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

	private JPanel createMainPanel() {
		// create panel with BoxLayout
		JPanel panel = new JPanel();
		boxLayout = new BoxLayout(panel, BoxLayout.X_AXIS);
		panel.setLayout(boxLayout);
		// add button change to main panel
		JButton btnChange = new JButton("Change");
		btnChange.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				change();
			}
		});
		panel.add(btnChange);
		// add list button to main panel
		for (int i = 0; i < 5; i++) {
			panel.add(new JButton("Button" + i));
		}
		return panel;
	}

	// change axis when click button change
	private void change() {
		int ax = axis ? BoxLayout.Y_AXIS : BoxLayout.X_AXIS;
		// reset boxLayout
		boxLayout = new BoxLayout(mainPanel, ax);
		// set boxLayout to mainPanel
		boxLayout.layoutContainer(mainPanel);
		axis = !axis;
	}

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

BoxLayoutを使用します
私たちはただのJPanelを作成することができます、あなたは以前の記事で気づいたことがあります, レイアウトは、それが形にすぐにであるために設定されています:
[JPanelのパネル=新しいJPanelの(新しいのLayoutManager());
BoxLayoutコンストラクタの私たちのコンテナのためにそこにあるので、しかし、BoxLayoutで、私たちはそうすることができません.
BoxLayout(コンテナ対象, int型軸): 軸のレイアウトでBoxLayoutを作成します.
だから我々はコンテナを初期化する必要があります (JPanelの) 前, その後、初期化し、最終的に機能を使用BoxLayout setLayoutの JPanelのレイアウトを配置します.
引数の軸に応じて、水平または垂直のオブジェクトの配置, X_AXISは水平に配置されます, Y_AXISは垂直です.
更新…