如何检查 JDialog 是否已经在 Java 中打开?

How to check if JDialog is already opened in Java?

我目前正在开发一个数字时钟小部件。我使用 JPanel 表单 设计了它,并将其添加到 JDialog。这是代码。

static JDialog jDialog = new JDialog();

public static void main(String[] args)
{
   jDialog.setUndecorated(true);
   jDialog.add(new QuickLauncher());
   jDialog.pack();
   jDialog.setBackground(new Color(0, 255, 0, 0));
   jDialog.setLocationRelativeTo(null);
   jDialog.setVisible(true);
 }

问题是当我 运行 这个程序两次时它打开了两个 windows。所以我需要的是我只需要一个 window 到 运行 并且如果我再次 运行 程序而不是再次 运行ning 程序,它需要关注应用程序。我尝试了各种示例和方法,例如 isVisible()isActive(),但我无法弄清楚如何解决此问题。我也试过了,

How to check if a jframe is opened?

请问有人能帮帮我吗?提前致谢。

没有特别干净的方法来执行此操作。如果你能够使用 Java 9,你可以使用新进程 API 来获取所有带有 ProcessHandle.allProcesses() 的进程的列表并搜索与你的程序匹配的进程,否则你需要求助于平台相关行为。

另一种方法(不需要 Java 9)是使用 FileLock。您将在已知位置创建一个文件,然后将其锁定(参见上文 link)。当 JVM 关闭时,锁将被释放。当你的程序启动时,你可以接着检查文件是否被锁定来确定你的程序是否已经运行.