如何检查 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 关闭时,锁将被释放。当你的程序启动时,你可以接着检查文件是否被锁定来确定你的程序是否已经运行.
我目前正在开发一个数字时钟小部件。我使用 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 关闭时,锁将被释放。当你的程序启动时,你可以接着检查文件是否被锁定来确定你的程序是否已经运行.