Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.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 使用Singleton时,Swing组件错误地放置在JFrame上_Java_Swing_Singleton_Jframe - Fatal编程技术网

Java 使用Singleton时,Swing组件错误地放置在JFrame上

Java 使用Singleton时,Swing组件错误地放置在JFrame上,java,swing,singleton,jframe,Java,Swing,Singleton,Jframe,假设我有一个JFrame,它是通过如下单例模式创建的: private static Dist2PuncteFrame instance = null; public static Dist2PuncteFrame getInstance() { if (instance == null) instance = new Dist2PuncteFrame(); return instance; } 我通过一个JMenuItem调用它,如下所示: dist2Pc

假设我有一个
JFrame
,它是通过如下单例模式创建的:

private static Dist2PuncteFrame instance = null;

public static Dist2PuncteFrame getInstance() {

    if (instance == null)
        instance = new Dist2PuncteFrame();
    return instance;
}
我通过一个
JMenuItem
调用它,如下所示:

dist2PcteItem.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {

            dist2PcteFrame = Dist2PuncteFrame.getInstance();
            dist2PcteFrame.setSomeParameters(blablabla);
            dist2PcteFrame.init();
        }
    });
没什么复杂的。第二次打开窗口时出现问题。
我的关闭按钮和两个输入标签似乎在移动(标签左/右、按钮上/下)

我有一些帧被称为完全相同的方式,它们没有这个问题。
有人知道问题出在哪里吗?
我正在使用NetBeans 7.1。

是否可能违反EDT?尽快查看更好的帮助,发布一个。如果没有看到您的代码,就不可能有人知道发生了什么。是的,发布您的代码-看起来您每次都在构建GUI,因此在单个框架中有多个GUI控件实例。尝试暂时删除单例检查(注释:“if(instance==null)”)以验证这一点。init()的作用是什么?它是否添加了控件?它一定是在做一些影响渲染的事情,我知道了。我的
init()
方法初始化组件(
result=new JLabel()
等),并调用addListeners()和createLayout()方法。解决方案是在
init()
中的所有内容之前添加
getContentPane().removeAll()