Java BoxLayout和此参考escape
在我创建的基本GUI中,我试图扩展Java BoxLayout和此参考escape,java,swing,layout-manager,boxlayout,Java,Swing,Layout Manager,Boxlayout,在我创建的基本GUI中,我试图扩展JPanel,并将BoxLayout设置为布局。以下是我想做的: public class TestPanel extends JPanel { public TestPanel() { super(); this.setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS)); } } 我最近发现,在当前实例完全构建之前,这个不能用作参数;然而,我在网上找到的例子中经常
JPanel
,并将BoxLayout
设置为布局。以下是我想做的:
public class TestPanel extends JPanel {
public TestPanel() {
super();
this.setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
}
}
我最近发现,在当前实例完全构建之前,这个
不能用作参数;然而,我在网上找到的例子中经常看到这种代码。这是否意味着我需要这样做,以确保一切按预期进行
public class TestPanel extends JPanel {
private TestPanel() {
super();
}
public static TestPanel create() {
TestPanel panel = new TestPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
return panel;
}
}
编辑:更清楚地说,这是我指的问题。我不确定这些考虑是否适用于我的情况,但我会这么认为。此时(1)超级构造函数完成,以及(2)所有字段初始化完成。TestPanel的子实例尚未出现。但这已经足够安全了。您在初始代码中得到的错误是什么?@Blip我现在没有收到任何错误,但是没有收到任何错误与拥有正确的代码不同,不是吗@JoopeGEN是否意味着,如果在构造函数的最后一个指令中,我可以让<代码>这个< /C>逃逸?Swing是单线程的,所以你不应该对线程有特别的问题(只要Swing被正确使用,如果不是那个地方不是你唯一的问题)。也可以考虑<代码> javax。Swing。