JavaSwing:如何检查在运行时打开了哪些组件?

JavaSwing:如何检查在运行时打开了哪些组件?,java,swing,jframe,Java,Swing,Jframe,我正在使用Java Swing,有以下问题: 有没有一种方法可以查看用户在运行时打开了哪种顶级容器 在我的UI上有一个按钮,它打开一个JFrame,由于它不能成为模态,用户可以打开无数的帧。我想阻止用户这样做。(以防万一:我不想切换到JDialog:)您可以使用静态方法 返回所有窗口s的数组,包括有主和无主, 由此应用程序创建 因此,您将获得所有帧和对话框 可能您需要将此阵列缩减 跳过当前关闭的窗口。您可以使用静态方法 返回所有窗口s的数组,包括有主和无主, 由此应用程序创建 因此,您将获得所有

我正在使用Java Swing,有以下问题:

有没有一种方法可以查看用户在运行时打开了哪种顶级容器


在我的UI上有一个按钮,它打开一个
JFrame
,由于它不能成为模态,用户可以打开无数的帧。我想阻止用户这样做。(以防万一:我不想切换到
JDialog
:)

您可以使用静态方法

返回所有
窗口
s的数组,包括有主和无主, 由此应用程序创建

因此,您将获得所有帧和对话框

可能您需要将此阵列缩减
跳过当前关闭的窗口。

您可以使用静态方法

返回所有
窗口
s的数组,包括有主和无主, 由此应用程序创建

因此,您将获得所有帧和对话框

可能您需要将此阵列缩减 跳过当前关闭的窗口。

多亏了Thomas

                Window[] openedWindows = Window.getWindows();
                int countOfShowingWindows = 0;
                for (Window window : openedWindows)
                {
                    if (window.isShowing()) ++countOfShowingWindows;
                }
                if (countOfShowingWindows == 1)
                {
                    // Open the Dialog
                }
多亏了托马斯

                Window[] openedWindows = Window.getWindows();
                int countOfShowingWindows = 0;
                for (Window window : openedWindows)
                {
                    if (window.isShowing()) ++countOfShowingWindows;
                }
                if (countOfShowingWindows == 1)
                {
                    // Open the Dialog
                }

“(以防万一:我不想切换到JDialog:)”。。为什么?因为转换要花很多时间。当我编写UI时,我没有考虑这个问题。“因为切换需要很多时间。”获得(基本上正常工作的)代码需要更多的时间&维护方面的时间要多得多,要坚持当前的方法。现在就更改为JDialog,以便从长远来看节省时间。如果这是一项专业工作,你是对的。这只是我自己的一个小工具。”(以防万一:我不想切换到JDialog:)”。。为什么?因为转换要花很多时间。当我编写UI时,我没有考虑这个问题。“因为切换需要很多时间。”获得(基本上正常工作的)代码需要更多的时间&维护方面的时间要多得多,要坚持当前的方法。现在就更改为JDialog,以便从长远来看节省时间。如果这是一项专业工作,你是对的。这只是我自己的一个小工具。