Привет всем, у меня есть этот Java-код, который создает значок в системном трее, следуя примеру THIS :
public static void createTray() {
//Check the SystemTray is supported
if (!SystemTray.isSupported()) {
JOptionPane.showMessageDialog(null, "SystemTray is not supported", "DOH! An error", JOptionPane.ERROR_MESSAGE);
return;
}
URL imageURL = winBuilder.class.getResource("/bulb.gif");
trayIcon = new TrayIcon((new ImageIcon(imageURL, "")).getImage());
tray = SystemTray.getSystemTray();
trayIcon.setImageAutoSize(true);
// Create a pop-up menu components
MenuItem aboutItem = new MenuItem("About");
MenuItem exitItem = new MenuItem("Exit");
//Add components to pop-up menu
popup.add(aboutItem);
popup.addSeparator();
popup.add(exitItem);
trayIcon.setPopupMenu(popup);
try {
tray.add(trayIcon);
} catch (AWTException e) {
JOptionPane.showMessageDialog(null, "TrayIcon could not be added: " + e.getLocalizedMessage(), "DOH! An error", JOptionPane.ERROR_MESSAGE);
}
trayIcon.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//Double-click action on icon
frmUftWebui.setVisible(true);
frmUftWebui.repaint();
SystemTray.getSystemTray().remove(trayIcon);
}
});
aboutItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null,
"This dialog box is run from the About menu item");
}
});
exitItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
trayIcon.displayMessage("Exit", "The cool program has closed.", TrayIcon.MessageType.INFO); //ERROR | WARNING | INFO | NONE
tray.remove(trayIcon);
System.exit(0);
}
});
}
Это работает и показывает значок в системном трее, как и должно, но как только я дважды щелкну по значку, появится новое окно вместо моего исходного окна?
Это ГЛАВНЫЙ код, который у меня есть:
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
} catch (IllegalAccessException ex) {
ex.printStackTrace();
} catch (InstantiationException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
/* Turn off metal's use of bold fonts */
UIManager.put("swing.boldMetal", Boolean.FALSE);
try {
frmUftWebui.setVisible(false);
frmUftWebui.getContentPane().setLayout(null);
frmUftWebui.setState(frmUftWebui.ICONIFIED);
// Web HTML panel
jfxPanel = new JFXPanel();
jfxPanel.setBackground(Color.WHITE);
jfxPanel.setBounds(0, 0, 1098, 523);
frmUftWebui.getContentPane().add(jfxPanel);
javafx.application.Platform.runLater(new Runnable() {
@SuppressWarnings({ "unchecked", "unused" })
public void run() {
createTray();
............................
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Error: " + e.getLocalizedMessage(), "DOH! An error", JOptionPane.ERROR_MESSAGE);
}
}
Чего мне не хватает, чтобы заставить его открывать исходное окно вместо того, чтобы создавать новое, когда я щелкаю по значку на панели задач?