Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java BoxLayout和此参考escape_Java_Swing_Layout Manager_Boxlayout - Fatal编程技术网

Java BoxLayout和此参考escape

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)); } } 我最近发现,在当前实例完全构建之前,这个不能用作参数;然而,我在网上找到的例子中经常

在我创建的基本GUI中,我试图扩展
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。