Java - 检查 jframe 是否已经打开?

Java - Check if a jframe is already open?

我正在 java 中创建一个 jframe。但是我想检查系统上是否已经存在 jframe。我尝试了一种方法,您可以从任务管理器中获取所有进程并查看它是否正在 运行ning,但它不起作用。我正在使用这个 post 中的方法: 它的进程名称是“javaw.exe”。

它无法检查 jframe 对象是否为空,因为它将 运行 来自不同的程序。是否可以检查 jframe 是否已经打开我的系统。

听起来您希望 java 进程能够访问其他进程的 java 对象。您可以通过 IPC 执行此操作,请参阅 this answer 了解一些想法。

如果您仅针对单个用例需要它,只是为了检查一个特定 JFrame 的存在,那么我建议只使用一个简单的锁定文件。该文件名可以是任何名称,例如“myprogram.lock”。唯一重要的是确保所有程序实例都使用相同的目录,例如。 Windows 临时目录。

  • 在创建 JFrame 之前,检查锁定文件是否存在。
  • 如果锁定文件已经存在,请不要创建 JFrame。
  • 如果锁定文件不存在,请创建锁定文件,然后创建 JFrame。
  • 关闭JFrame时,删除锁文件。

出于调试目的,您可以将进程 ID 写入锁定文件。