Java AWT | BoxLayout 类
BoxLayout 类用于垂直(沿 Y 轴)或水平(沿 X 轴)排列组件。在 BoxLayout 类中,组件被放置在单行或单列中。组件不会换行,例如,当框架调整大小时,组件的水平排列将保持水平排列。
类的构造函数:
- BoxLayout(Container c, int axis):创建一个BoxLayout类,用X轴或Y轴排列组件。
常用方法:
- addLayoutComponent(Component cmp, Object obj):这个类不使用它。
- getLayoutAlignmentX(Container con):返回容器沿 X 轴的对齐方式。
- getLayoutAlignmentY(Container con):返回容器沿 Y 轴的对齐方式。
- maximumLayoutSize(Container con):返回目标容器可以用来布置其包含的组件的最大尺寸。
- minimumLayoutSize(Container con):返回布局指定目标容器中包含的组件所需的最小尺寸。
- removeLayoutComponent(Component cmp):这个类不使用它。
- layoutContainer(Container tar):当需要对指定的容器进行布局时,由 AWT 调用。
下面的程序说明了 BoxLayout 类:
- 程序 1:在下面的程序中,我们将几个JLabel组件安排在一个JFrame中。我们创建了 1 个名为“Panel”的JPanel组件和 5 个名为“ jbtn1 ”、“ jbtn2 ”、“ jbtn3 ”、“ jbtn4 ”、“ jbtn5 ”的JButton组件。此外,我们正在创建一个名为“boxlayout”的BoxLayout组件和一个JFrame类,然后使用add()方法将它们添加到JFrame中。我们使用setvisible()方法设置框架的可见性。使用setLayout()方法设置布局。
// Java program to demonstrate BoxLayout // class along X-Axis import javax.swing.JFrame; import javax.swing.JButton; import javax.swing.BoxLayout; import javax.swing.Box; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import java.awt.Insets; import java.awt.Dimension; // taking a class Demo public class Demo { // Main Method public static void main(String[] args) { // Function to set up the window frame. JFrame.setDefaultLookAndFeelDecorated(true); // Creating Object of "JFrame" class JFrame frame = new JFrame("BoxLayout Example X_AXIS"); // Declaration of objects of JButton class. JButton jbtn1, jbtn2, jbtn3, jbtn4, jbtn5; // Function to set the default // close operation of JFrame the. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Set the panel to add buttons JPanel panel = new JPanel(); // Creating Object of "boxlayout" in // X_Axis from left to right BoxLayout boxlayout = new BoxLayout(panel, BoxLayout.X_AXIS); // to set the box layout panel.setLayout(boxlayout); // Set border for the panel panel.setBorder(new EmptyBorder(new Insets(100, 150, 100, 150))); // Initialization of object "jb1" of JButton class. jbtn1 = new JButton("Button 1"); // Initialization of object "jb2" of JButton class. jbtn2 = new JButton("Button 2"); // Initialization of object "jb3" of JButton class. jbtn3 = new JButton("Button 3"); // Initialization of object "jb4" of JButton class. jbtn4 = new JButton("Button 4"); // Initialization of object "jb5" of JButton class. jbtn5 = new JButton("Button 5"); // Adding JButton "jb1" on JFrame panel.add(jbtn1); // Adding JButton "jb2" on JFrame panel.add(jbtn2); // Adding JButton "jb3" on JFrame panel.add(jbtn3); // Adding JButton "jb4" on JFrame panel.add(jbtn4); // Adding JButton "jb5" on JFrame panel.add(jbtn5); // Function to set the panel of JFrame. frame.add(panel); // Function to use the pack of JFrame. frame.pack(); // Function to set visible status of JFrame. frame.setVisible(true); } }
输出:
- 程序 2:以下程序将组件沿 Y 轴排列在一个JFrame 中。我们创建了1个名为“Panel”的JPanel组件,5个名为“ jbtn1 ”、“ jbtn2 ”、“ jbtn3 ”、“ jbtn4 ”、“ jbtn5 ”的JButton组件,一个名为“boxlayout”的BoxLayout组件和一个JFrame类,然后添加它们使用add()方法添加到JFrame 。我们将使用setvisible()方法设置框架的可见性。使用setLayout()方法设置布局。
// Java program to demonstrate BoxLayout // class along Y-Axis import javax.swing.JFrame; import javax.swing.JButton; import javax.swing.BoxLayout; import javax.swing.Box; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import java.awt.Insets; import java.awt.Dimension; // construct a class Demo_1 public class Demo_1 { // Main Method public static void main(String[] args) { // Function to set up the window frame. JFrame.setDefaultLookAndFeelDecorated(true); // Creating Object of "JFrame" class JFrame frame = new JFrame("BoxLayout Example Y_AXIS"); // Declaration of objects of JButton class. JButton jbtn1, jbtn2, jbtn3, jbtn4, jbtn5; // Function to set the default close operation of JFrame the. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Set the panel to add buttons JPanel panel = new JPanel(); // Creating Object of "boxlayout" in Y_Axis from top to down BoxLayout boxlayout = new BoxLayout(panel, BoxLayout.Y_AXIS); // to set the box layout panel.setLayout(boxlayout); // Set border for the panel panel.setBorder(new EmptyBorder(new Insets(100, 150, 100, 150))); // Initialization of object "jb1" of JButton class. jbtn1 = new JButton("Button 1"); // Initialization of object "jb2" of JButton class. jbtn2 = new JButton("Button 2"); // Initialization of object "jb3" of JButton class. jbtn3 = new JButton("Button 3"); // Initialization of object "jb4" of JButton class. jbtn4 = new JButton("Button 4"); // Initialization of object "jb5" of JButton class. jbtn5 = new JButton("Button 5"); // Adding JButton "jb1" on JFrame panel.add(jbtn1); // Adding JButton "jb2" on JFrame panel.add(jbtn2); // Adding JButton "jb3" on JFrame panel.add(jbtn3); // Adding JButton "jb4" on JFrame panel.add(jbtn4); // Adding JButton "jb5" on JFrame panel.add(jbtn5); // Function to set the panel of JFrame. frame.add(panel); // Function to use the pack of JFrame. frame.pack(); // Function to set visible status of JFrame. frame.setVisible(true); } }
输出:
注意:上述程序可能无法在在线 IDE 中运行。请使用离线编译器。
参考: https://docs.oracle.com/javase/7/docs/api/javax/swing/BoxLayout.html