Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.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 JFrame上的工具栏不会更新,Singleton_Java_Swing - Fatal编程技术网

Java JFrame上的工具栏不会更新,Singleton

Java JFrame上的工具栏不会更新,Singleton,java,swing,Java,Swing,我有一个叫MainWindow的JFrame public class MainWindow extends JFrame { private static MainWindow instance = null; public static MainWindow getInstance() { if (instance == null) { instance = new MainWindow(); instanc

我有一个叫MainWindow的JFrame

public class MainWindow extends JFrame {

    private static MainWindow instance = null;

    public static MainWindow getInstance() {
        if (instance == null) {
            instance = new MainWindow();
            instance.init();
        }

        return instance;
    }
}
在init()方法中,我得到了menupupulate()和toolbarPopulate()方法,其中我添加了菜单项和工具栏项。我的主窗口是singleton,还有一个名为“NewKeyPairPL”的菜单项,它在开始时设置为可见(false)在这里,我试图从我的控制器启用菜单项

我的问题是当我想将NewKeyPairPL菜单项设置为setVisible(true)时。我是从控制器上做的,它没有更新。下面是我的代码:

MainWindow.getInstance().getNewKeyPairPL().setVisible(true);
MainWindow.getInstance().getNewKeyPairPL().repaint();
MainWindow.getInstance().getNewKeyPairPL().revalidate();

MainWindow.getInstance().getToolBar().repaint();
MainWindow.getInstance().getToolBar().revalidate();

MainWindow.getInstance().repaint();
MainWindow.getInstance().revalidate();
另外,如果我在MainWindow类中尝试相同的操作,如下所示:

btn1.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {

        newKeyPairPL.setEnabled(true);
    }

});
(btn1是我工具栏中的按钮之一)


它正在工作,但这不是我需要的。

什么是newKeyPairPL?我写道,我想将它的菜单项设置为可见,因为它在开始时不可见。也许你可以尝试将其简化为一个只有JFrame和JMenu的示例。从你的“回答”来看,听起来你在制作不止一个“主窗口”。也许您应该同步该方法。请添加一个完整的、可编译的代码示例。