📜  Java AWT | BoxLayout 类

📅  最后修改于: 2022-05-13 01:55:44.805000             🧑  作者: Mango

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