分配布局时出错:无法共享 BoxLayout

2022-08-31 08:43:32

我有这个Java类,我想在其中使用boxlayout,但是我得到一个错误说.我见过其他人有这个问题,但他们通过在内容窗格上创建框布局来解决它,但这就是我在这里所做的。这是我的代码:JFramejava.awt.AWTError: BoxLayout can't be shared

class EditDialog extends JFrame {
    JTextField title = new JTextField();
    public editDialog() {
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setTitle("New entity");
        getContentPane().setLayout(
            new BoxLayout(this, BoxLayout.PAGE_AXIS));
        add(title);
        pack();
        setVisible(true);
    }
}

答案 1

您的问题是您正在为 () 创建一个,但将其设置为 () 的布局。尝试:BoxLayoutJFramethisJPanelgetContentPane()

getContentPane().setLayout(
    new BoxLayout(getContentPane(), BoxLayout.PAGE_AXIS)
);

答案 2

我也发现了这个错误,使这个:

JPanel panel = new JPanel(new BoxLayout(panel, BoxLayout.PAGE_AXIS));

JPanel 在将它传递给 BoxLayout 时尚未初始化。所以像这样拆分这行:

JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));

这将起作用。