我有一个Java类,在这个类中我想使用一个JFrame
布局,但是我得到了一个错误提示java.awt.AWTError: BoxLayout can't be shared
。我见过其他有这个问题的人,但他们通过在contentpane窗格上创建but布局解决了这个问题,但这就是我在这里做的。下面是我的代码:
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);
}
}
发布于 2009-04-17 17:26:05
您的问题是您正在为JFrame
创建一个BoxLayout
(this
),但是将它设置为JPanel
的布局(getContentPane()
)。尝试:
getContentPane().setLayout(
new BoxLayout(getContentPane(), BoxLayout.PAGE_AXIS)
);
发布于 2010-07-28 03:30:41
我还发现了这样的错误:
JPanel panel = new JPanel(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
在将JPanel传递给BoxLayout时,它还没有初始化。因此,像这样分割这一行:
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
这将会起作用。
发布于 2011-09-08 04:46:07
我认为从前面的答案中需要强调的一件重要事情是,BoxLayout的目标(第一个参数)应该与调用setLayout方法的容器相同,如下面的示例所示:
JPanel XXXXXXXXX = new JPanel();
XXXXXXXXX.setLayout(new BoxLayout(XXXXXXXXX, BoxLayout.Y_AXIS));
https://stackoverflow.com/questions/761341
复制相似问题