BoxLayout.Y_AXIS无法在Swings中运行

时间:2016-11-11 16:22:43

标签: java swing jpanel layout-manager boxlayout

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个按钮水平并排排列,我希望它们能够正确放置。

1 个答案:

答案 0 :(得分:1)

默认情况下,FlowLayout使用BoxLayout,因此您的setLayout( new BoxLayout(this, BoxLayout.Y_AXIS) ); 班级正在使用{{1}}。

您正在向面板添加按钮,因此面板需要使用{{1}},而不是内容窗格。

在您的课程构造函数的开头,您需要:

{{1}}