繁体   English   中英

不需要的多个实例Java

[英]unwanted multiple instances java

新问题。 根据上一个问题中的步骤调整程序后: 如何在不创建实际对象的情况下访问已运行的类实例

我提出了新的怪异问题。 我通过构造函数将I的引用传递给G,然后使用该引用从G操作I。我已将该函数映射到“后退按钮”。 问题:如果我点击后退按钮并调整我的I框架,然后单击完成按钮,该按钮隐藏I界面并将G框架设置为可见。 我还有另一个按钮,可以简单地创建I的新的清晰实例,按下该按钮后,我会打开大量的I实例(与我按下后退按钮的次数成正比)。 经过广泛的调试后,我仍然感到困惑...也许这是我创建太多线程的问题...我不知道..这里有一些代码片段:

G构造函数:

 public GUI(Intro i) {
    this.intro = i;
    make();
    layout();
    layout2();
    layout3();
    invalid();
    setEnable();
}

后退按钮代码:

private class BackToSetUp implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent arg0) {
        intro.frame.setVisible(true);
        frame.dispose();
    }

}

重置按钮代码:

private class ResetProgram implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent arg0) {
        frame.dispose();
        frame2.dispose();
        frame3.dispose();
        frame4.dispose();
        Runnable runnable = new Runnable() {
            public void run() {

                intro = new Intro(); 
                intro.setVisible(true);

            }
        };
        EventQueue.invokeLater(runnable);


    }

}

完成按钮代码:

class Done implements ActionListener {
    GUI g = new GUI();
    @Override
    public void actionPerformed(ActionEvent e) {

        for (int i = 0; i < 9; i++) {
            System.out.println(array[i]);
        }

        g.setArray(array);
        System.out.println(array);
        setText();
        frame.setVisible(false);
        g.setVisible(true);
        g.setVisible2(false);
        //if (g.clear.isSelected()) {
        //  frame.setVisible(true);
        //}
    }

将先前的G实例设置为null可解决此问题,因为垃圾收集器将其丢弃,因此每个类一次仅运行一个实例。 解决了

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM