Hallo,
Ich würde gerne einen JFrame beim Drücken auf die Minimieren-Schaltfläche unsichtbar machen. Sollte der Benutzer das Fenster wieder benötigen, klickt er auf das Icon im System Tray und es sollte wieder sichtbar werden. Der unten angefügte Code funktioniert ausgezeichnet unter Windows, aber nicht unter LINUX! Unter LINUX blinkt es nur kurz im Panel, der JFrame wird aber nicht wieder sichtbar. Erst nach mehrmaligem klicken erscheint er wieder an Bildschirm. Kann mir jemand sagen warum nicht und was ich sonst tun könnte?
Danke im Vorhinein!
P.S.: Hab' auch schon folgendes probiert: http://jug.org.ua/wiki/display/JavaAlmanac/Iconifying+and+Maximizing+a+Frame
Das funktioniert ausgezeichnet, aber das Problem ist, das ich hier über eine eigene Schaltfläche gehen muss und die Standardschaltfläche "Minimieren" nicht nutzen kann (oder nicht weiß, wie man diese übersteuert). Außerdem besteht immer noch das Problem, wenn jemand "show Desktop" anwendet.
Ich würde gerne einen JFrame beim Drücken auf die Minimieren-Schaltfläche unsichtbar machen. Sollte der Benutzer das Fenster wieder benötigen, klickt er auf das Icon im System Tray und es sollte wieder sichtbar werden. Der unten angefügte Code funktioniert ausgezeichnet unter Windows, aber nicht unter LINUX! Unter LINUX blinkt es nur kurz im Panel, der JFrame wird aber nicht wieder sichtbar. Erst nach mehrmaligem klicken erscheint er wieder an Bildschirm. Kann mir jemand sagen warum nicht und was ich sonst tun könnte?
Danke im Vorhinein!
Code:
private void formWindowIconified(java.awt.event.WindowEvent evt) {
[color=blue]setVisible(false);[/color]
}
public void SysTray () {
final TrayIcon trayIcon;
if (SystemTray.isSupported()) {
SystemTray tray = SystemTray.getSystemTray();
java.net.URL iconUrl = this.getClass().getResource("jack_in_box.gif");
Image image = getToolkit().getImage(iconUrl);
MouseListener mouseListener = new MouseListener() {
public void mouseClicked(MouseEvent e) {
[color=blue]setVisible(true);
setExtendedState(Frame.NORMAL);[/color] }
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
};
ActionListener exitListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
};
PopupMenu popup = new PopupMenu();
MenuItem defaultItem = new MenuItem("Exit");
defaultItem.addActionListener(exitListener);
popup.add(defaultItem);
trayIcon = new TrayIcon(image, "CheckInBox", popup);
trayIcon.setImageAutoSize(true);
trayIcon.addMouseListener(mouseListener);
try {
tray.add(trayIcon);
} catch (AWTException e) {
System.err.println("TrayIcon could not be added.");
}
} else {
// System Tray is not supported
}
}
P.S.: Hab' auch schon folgendes probiert: http://jug.org.ua/wiki/display/JavaAlmanac/Iconifying+and+Maximizing+a+Frame
Das funktioniert ausgezeichnet, aber das Problem ist, das ich hier über eine eigene Schaltfläche gehen muss und die Standardschaltfläche "Minimieren" nicht nutzen kann (oder nicht weiß, wie man diese übersteuert). Außerdem besteht immer noch das Problem, wenn jemand "show Desktop" anwendet.