Как проверить, открыт ли JDialog в Java? - PullRequest
0 голосов
/ 04 сентября 2018

Я сейчас занимаюсь разработкой виджета цифровых часов. Я разработал его, используя 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);
 }

Проблема в том, что когда я запускаю эту программу дважды, она открывает два окна. Так что мне нужно только одно окно для запуска, и если я запустил программу снова вместо того, чтобы снова запустить программу, она должна сфокусировать приложение. Я пробовал различные примеры и методы, такие как isVisible() и isActive(), но не могу понять, как решить эту проблему. Я тоже это попробовал,

Как проверить, открыт ли jframe?

Пожалуйста, кто-нибудь может мне помочь? Заранее спасибо.

1 Ответ

0 голосов
/ 04 сентября 2018

Нет особо чистого способа сделать это. Если вы можете использовать Java 9, вы можете использовать новый API процессов, чтобы получить список всех процессов с ProcessHandle.allProcesses() и искать те из них, которые соответствуют вашей программе, но в противном случае вам потребуется прибегнуть к платформо-зависимому поведению.

Альтернативным методом (не требующим Java 9) будет использование FileLock . Вы должны создать файл в известном месте, а затем заблокировать его (см. Ссылку выше). Когда JVM выключится, замок будет снят. Когда ваша программа запускается, вы можете проверить, заблокирован ли файл, чтобы определить, запущена ли ваша программа.

...