如何使 JFrame/JPanel "Modal" 在 Window 关闭或按下按钮之前不会继续输入?

How To Make A JFrame/JPanel "Modal" So No Input Will Continue Until The Window Is Closed Or Button Pushed?

我在这里有另一个问题,建议我制作程序 "modal" 以阻止程序从 运行 下一行和 "pausing" 弹出时的程序发生了。我试过了,但我不明白它是如何工作的 100%。

这是我尝试测试的代码:

import javax.swing.*;
import java.awt.*;

public class test {

    public static void main(String[] args) {
        JFrame theDog = new JFrame();
        theDog.setSize(200,200);
        theDog.setVisible(true);
        new JDialog(theDog,"theTitle", Dialog.ModalityType.APPLICATION_MODAL);

        System.out.println("hello");
    }
}

当 JPanel 框弹出时,它应该 "halt" 程序,直到在那里执行操作。例如,我想要一个基于图片的按钮推送。我正在寻找专门使用自定义 JPanel/JFrame 来执行此操作,而不是使用某些 JOptionPane 获取输入对话框或类似的东西。

当我运行上面的代码时,system.out.println 运行无论如何,即使我没有关闭对话框,就像程序忽略了弹出一样向上。如何在采取下一步行动之前停止并等待用户操作?

这是我提出的上一个问题并给出了建议:How Do You Halt The Current Programs "Progress" at A JPanel/JFrame Pop Up?

您需要先让对话框可见,然后它才会阻塞...

JDialog dialog = new JDialog(theDog,"theTitle", Dialog.ModalityType.APPLICATION_MODAL);
dialog.setVisible();

Windows 在 Swing 中默认不可见

查看How to Make Dialogs了解更多详情