Java 如何制作JFrame/JPanel“;“模态”;因此,在关闭窗口或按下按钮之前,不会继续输入?

Java 如何制作JFrame/JPanel“;“模态”;因此,在关闭窗口或按下按钮之前,不会继续输入?,java,swing,jframe,jpanel,Java,Swing,Jframe,Jpanel,我在这里有另一个问题,有人建议我将程序设置为“模态”,以阻止程序运行到下一行,并在出现弹出时“暂停”程序。我已经试过了,但我不明白它是如何100%工作的 以下是我尝试测试的代码: import javax.swing.*; import java.awt.*; public class test { public static void main(String[] args) { JFrame theDog = new JFrame(); theDog

我在这里有另一个问题,有人建议我将程序设置为“模态”,以阻止程序运行到下一行,并在出现弹出时“暂停”程序。我已经试过了,但我不明白它是如何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框弹出时,它应该“暂停”程序,直到在那里执行操作为止。例如,我想根据图片按下按钮。我特别希望使用定制的JPanel/JFrame来实现这一点,而不是使用一些JOptionPane获取输入对话框或类似的东西

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


这是我之前提出的问题,并给出了一些建议:

您需要在对话框阻塞之前使其可见

JDialog dialog = new JDialog(theDog,"theTitle", Dialog.ModalityType.APPLICATION_MODAL);
dialog.setVisible();
默认情况下,Swing中的窗口不可见


查看更多详细信息

感觉像是《盗梦空间》。。现在Jpanel、Jframe、Jdialog里面有很多东西……是的。但是请记住,
JDialog
JFrame
应该用于显示其他组件,这样,您可以在不同的上下文中重用组件,也可以通过在窗口中组合组件来生成复杂的UI……但这就是我;)我不明白,你能用另一种方式说吗?“显示其他组件”是什么意思?你是说,将按钮、标签、图片等放在JFrame或JDialog中,整个“窗口”应该是一个JPanel?如果使用JDialog来显示它看起来像什么,那么我该如何阻止程序在没有它的情况下运行呢?我的意思是,抵制从
JFrame
JDialog
扩展以创建基本UI的冲动,使用
JPanel
作为主要容器,通过使用不同的块来构建复杂性,而不是简单地将所有鸡蛋放在一个篮子里。创建小的逻辑功能组,我们可能会在不同的时间重复使用或以不同的方式使用。它将代码解耦,使其更加灵活;)我从根本上理解你说的话。然而,我感到困惑的是,我需要一个JDialog框来“阻止”程序继续运行。在我看来,Jpanel或JFrame没有这些函数,对吗?只有一个“组件”或“部分”必须是JDialog才能运行模态,还是必须是整个查看层?我注意到在上面的示例中,我有两个弹出窗口,因为我有一个JFrame setVisible为true,一个JDialog框设置为true。看来我应该只拥有JDialogBox?你知道我在说什么吗?