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

时间:2018-03-29 11:09:08

标签: java swing jframe

我正在使用Java Swing并提出以下问题:

有没有办法看到用户在运行时打开了哪种顶级容器?

我的用户界面上有一个按钮,可以打开JFrame,因为无法进行模态制作,用户可以打开无穷无尽的帧。我想阻止用户这样做。 (以防万一:我不想切换到JDialog :))

2 个答案:

答案 0 :(得分:2)

您可以使用静态方法Window.getWindows()

  

返回所有Window的数组,包括拥有者和无主者,     由此应用程序创建。

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

可能需要按isShowing()减少此数组 跳过当前关闭的窗口。

答案 1 :(得分:0)

感谢托马斯!

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