java - 在打开新的 java swing 之前关闭旧的对话框

标签 java swing notepad

请大家帮帮我,我用 java-swing 创建了一个记事本。但我有一个问题。每当我使用 Action 事件(替换、查找)时,程序都会将其显示在屏幕上,而我再次使用 Action 事件时,它会在屏幕上显示另一个事件,但不会关闭旧的事件。

private void replaceController(MainForm mainForm) {
    mainForm.getReplace().addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            ReplaceForm replaceForm = new ReplaceForm(mainForm, false);
            replaceForm.setVisible(true);
            replaceForm.getBtnReplace().setEnabled(false);
            replaceForm.getBtnReplaceAll().setEnabled(false);



            ReplaceController replaceController = new ReplaceController();
            replaceController.checkEmptyReplace(replaceForm);
            replaceController.replace(mainForm, replaceForm);
            replaceController.f(mainForm, replaceForm);
            replaceController.replaceAll(mainForm, replaceForm);
            replaceController.cancelReplace(replaceForm);
        }
    });

}

最佳答案

关注default close operation您应用于顶级 JFrame 或 JDialog。

如果您希望框架只是隐藏而不被丢弃,请使用HIDE_ON_CLOSE。当您希望它再次显示在屏幕上时,请将其设置为visible。这意味着您需要框架的唯一实例。

如果您希望将其释放(看起来像这样,因为每次调用操作时都会构造一个新的),请使用DISPOSE_ON_CLOSE。然后每次用户关闭框架时它都会被销毁。

关于java - 在打开新的 java swing 之前关闭旧的对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58408650/

相关文章:

java - 以固定时间间隔处理 JavaDStream

matlab - 为什么 fprintf 在文本模式下的行为与在正常模式下正确设置的回车符不同?

regex - Notepad++复制/粘贴每行的一部分并替换

java - 返回到嵌入 Java VM 的程序的 JNI 本地引用的规则是什么?

java - 从 Gradle 依赖项中排除包

java - 除非没有接收者,否则无法发送到无限制的 LinkedBlockingQueue?

java - 带有GUI的简单Java程序,我的错误是什么?

java - 处理 JPopupMenu 关闭

java - JFrame 未全屏显示所有图像

javascript - 在 .txt 文件中插入要读取的新行