首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >分配布局时出错:无法共享BoxLayout

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

Stack Overflow用户
提问于 2009-04-17 17:18:14
回答 4查看 99.8K关注 0票数 122

我有一个Java类,在这个类中我想使用一个JFrame布局,但是我得到了一个错误提示java.awt.AWTError: BoxLayout can't be shared。我见过其他有这个问题的人,但他们通过在contentpane窗格上创建but布局解决了这个问题,但这就是我在这里做的。下面是我的代码:

代码语言:javascript
复制
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);
    }
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-04-17 17:26:05

您的问题是您正在为JFrame创建一个BoxLayout (this),但是将它设置为JPanel的布局(getContentPane())。尝试:

代码语言:javascript
复制
getContentPane().setLayout(
    new BoxLayout(getContentPane(), BoxLayout.PAGE_AXIS)
);
票数 187
EN

Stack Overflow用户

发布于 2010-07-28 03:30:41

我还发现了这样的错误:

代码语言:javascript
复制
JPanel panel = new JPanel(new BoxLayout(panel, BoxLayout.PAGE_AXIS));

在将JPanel传递给BoxLayout时,它还没有初始化。因此,像这样分割这一行:

代码语言:javascript
复制
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));

这将会起作用。

票数 80
EN

Stack Overflow用户

发布于 2011-09-08 04:46:07

我认为从前面的答案中需要强调的一件重要事情是,BoxLayout的目标(第一个参数)应该与调用setLayout方法的容器相同,如下面的示例所示:

代码语言:javascript
复制
JPanel XXXXXXXXX = new JPanel();
XXXXXXXXX.setLayout(new BoxLayout(XXXXXXXXX, BoxLayout.Y_AXIS));
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/761341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档