BoxLayout.Y_AXIS 无法在 Swings 中工作
BoxLayout.Y_AXIS not working in Swings
import javax.swing.*;
import java.awt.*;
class MyJPanel extends JPanel {
JButton login, register;
public MyJPanel() {
login = new JButton("Login");
register = new JButton("Register");
this.add(register);
this.add(login);
}
}
class MyJFrame extends JFrame {
MyJPanel mjp;
public MyJFrame(String title) {
super(title);
mjp = new MyJPanel();
Container ct = getContentPane();
ct.add(mjp);
setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
setSize(400,400);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class Gui7FirstPage {
public static void main(String[] args) {
MyJFrame mjf = new MyJFrame("Welcome!");
}
}
以上代码沿 X 轴对齐 2 个按钮登录和注册。我打算使用 BoxLayout.Y_AXIS 将它们堆叠起来,但它似乎不起作用。
这 2 个按钮并排水平对齐,我希望它们垂直放置。
默认情况下 JPanel
使用 FlowLayout
,因此您的 MyJPanel
class 使用 FlowLayout
。
您正在将按钮添加到面板,因此面板需要使用 BoxLayout
,而不是内容面板。
在您的 class 构造函数的开头,您需要:
setLayout( new BoxLayout(this, BoxLayout.Y_AXIS) );
import javax.swing.*;
import java.awt.*;
class MyJPanel extends JPanel {
JButton login, register;
public MyJPanel() {
login = new JButton("Login");
register = new JButton("Register");
this.add(register);
this.add(login);
}
}
class MyJFrame extends JFrame {
MyJPanel mjp;
public MyJFrame(String title) {
super(title);
mjp = new MyJPanel();
Container ct = getContentPane();
ct.add(mjp);
setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
setSize(400,400);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class Gui7FirstPage {
public static void main(String[] args) {
MyJFrame mjf = new MyJFrame("Welcome!");
}
}
以上代码沿 X 轴对齐 2 个按钮登录和注册。我打算使用 BoxLayout.Y_AXIS 将它们堆叠起来,但它似乎不起作用。
这 2 个按钮并排水平对齐,我希望它们垂直放置。
默认情况下 JPanel
使用 FlowLayout
,因此您的 MyJPanel
class 使用 FlowLayout
。
您正在将按钮添加到面板,因此面板需要使用 BoxLayout
,而不是内容面板。
在您的 class 构造函数的开头,您需要:
setLayout( new BoxLayout(this, BoxLayout.Y_AXIS) );