Как установить фокус или увидеть другой экземпляр того же пути к классу приложения, работающего в окнах Java, также с установленным Traicicon - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть следующий код, чтобы проверить, запущен ли другой экземпляр приложения

public class Application {
    private static final int PORT = 8586;
    private static ServerSocket s;

    static {
        try {
            s = new ServerSocket(PORT, 10, InetAddress.getLocalHost());
        } catch (Exception ex) {
            ex.printStackTrace();
            informAppRunning();
        }
    }

    public static void informAppRunning() {
        JOptionPane.showMessageDialog(null, "App already running");
        System.exit(0);
    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                DatabaseConnection.initDB();
                GUIMain main = new GUIMain();
                main.setLocationRelativeTo(null);
                main.setVisible(true);
            }
        });
     }
}

Экземпляр уже запущен, создал и установил TrayIcon.Я пытался заставить TrayIcon более старого экземпляра выполнить этот метод перед «System.exit (0);»

public static void sysTrayOldInstance() {
    System.out.println("sysTrayOldInstance();");
    SystemTray systemTray = SystemTray.getSystemTray();
    TrayIcon[] icons = systemTray.getTrayIcons();
    for (TrayIcon icon : icons) {
        System.out.println(icon);
    }
}

Но он ничего не показывает рядом с «sysTrayOldInstance ();».То, что я хочу сделать, это просто: если экземпляр приложения уже запущен, установите фокус на jFrame, если он видим, и, если он уже удален (нажав X), затем выполните ActionListener TrayIcon этого более старого экземпляра, который:

ActionListener actionListener = new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        jFrame.setVisible(true);
    }
};

Кто-нибудь знает, как это сделать, или даже путь, по которому я могу пойти ... Кроме того, если кто-нибудь знает, этот порт 8586 уже используется общими программами, пожалуйста, дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...