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