Swing Menüeintrag mit wechselndem Titel?

Corovus

Mitglied
Hallo,

ich bin gerade dabei mein erstes größeres Projekt in Java umzusetzten. Aktuell erstelle ich das Grundgerüst des GUI's und im Zuge dessen auch die Einträge im Popupmenu des TrayIcon's.

Ich würde hierfür gerne einen Menüpunkt "Hide Application/Show Application" anlegen. Dieser soll je nachdem ob die Anwendung gerade angezeigt wird den Titel "Hide Application" anzeigt und dann über einen Listener "dispose();" anwendet, oder "Show Application" wenn die Anwendung bereits versteckt ist und "setVisible(true);" aufrufen.

Ich hab schon alles mögliche probiert und mir die Tutorials auf Java.org angeschaut aber irgendwie konnte ich keine Antwort auf meine Frage finden.

Eine Möglichkeit die ich bereits gefunden habe ist einen MouseListener an das TrayIcon zu hängen und dann über eine if-Abfrage mit dem aktuellen "visible-Status" den Titel des Menüeintrags zu ändern und entsprechend "dispos();" oder "setVisible(true)" aufrufen. Zum einen ist das ganze aber nicht dynamisch, ich hab also keine Möglichkeit gefunden den Status abzufraben bevor jemand auf das Icon klickt und zum anderen ist es wohl auch sehr unprofessionell umgesetzt wie ich denke.

Vielleicht hat ja einer von euch eine Idee wie ich das ganze realisieren kann?

Danke und Gruß.
 
K

kneitzel

Gast
Also ich weiss jetzt nicht, was Du genau probiert hast und gemacht hast.
Ein ganz wichtiger Punkt:
- Wenn Du das Fenster nur versteckst, dann kannst Du es auch wieder sichtbar machen.
- Wenn Du das Fenster zerstörst (dispose() Aufruf), dann kannst Du es nicht wieder sichtbar machen! Dann müsstest Du ein neues Fenster erstellen und anzeigen!

Und den Status kannst Du ja auf vielfältige Weise speichern. Wenn Du da ein TrayIcon hast, dann steckt dahinter ja auch Code. Da kannst Du ja auch Referenzen auf Fenster, Daten, ... halten.
Wenn Du das Fenster zerstören willst, dann wäre wichtig, dass Du die Daten entsprechend ausserhalb des Fensters verwaltest (Was ich eh immer anraten würde. Sauber Trennung der Daten von der GUI und dann lediglich Bindings nutzen - egal ob diese direkt unterstützt werden oder ob man diese Bindings manuell implementiert).
 

Corovus

Mitglied
Hi,

was genau meinst du mit "nicht wieder sichtbar machen" wenn ich dispose anwende? Ich hab es aktuell z.B. so eingestellt, dass sowohl beim minimieren als auch beim betätigen des "Schließen-Buttons" dispose aufgerufen wird. Damit verschwindet der Eintrag aus der Taskleiste, aber das Programm wird im Hintergrund noch weiter ausgeführt, da sowohl das TrayIcon vorhanden ist als auch der Eintrag des Prozesses im Task-Manager.

Die Software ist eine Art Reminder-Software, bei der man Termine eintragen kann und dann eine Erinnerung bekommt. Dort ist es ja häufiger so das man so ein Programm nicht ständig in der Taskleiste haben möchte, es aber dennoch im Hintergrund weiterläuft. Wenn ich nur setVisible(false) aufrufe ist es ja weiterhin in der Taskleiste zu sehen.

Könntest du mir das mit den Bindings nochmal etwas genauer erklären bitte? Mir ist ja bewusst, dass man bei echten Daten (einlesen in eine Tabelle) nach dem MVC-Prinzip verfährt und die Daten von der Gui trennt. Wenn ich aber nur eine einfache Funktion an ein MenuItem koppeln möchte (Fenster minimieren, Programm beenden etc.) kann ich diese Anweisungen dann nicht einfach in den Methodenrumpf der jeweiligen Listener Methode (mousePressed,mouseDragged) schreiben?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C JavaFX Entfernen vom "java" Menüeintrag in der Systemmenüleiste in Mac OsX in Verbindung mit JavaFX AWT, Swing, JavaFX & SWT 1
N Bei Klick auf einen Menüeintrag, soll Tabelle ausgegeben wer AWT, Swing, JavaFX & SWT 4
D Aufklappmenü im Menüeintrag AWT, Swing, JavaFX & SWT 2
K JavaFX Titel und Fenstergröße aus Main.java übergeben AWT, Swing, JavaFX & SWT 0
P Swing JFrame minimiert sich bei Doppelklick auf die Titel-Leiste AWT, Swing, JavaFX & SWT 17
Y Titel Verschieben AWT, Swing, JavaFX & SWT 11
wolfgang63 JavaFX von controllerclass primarystage Titel setzen AWT, Swing, JavaFX & SWT 4
C Geloest: JTextfield: Titel automatisch entfernen, sobald Text eingegeben wird AWT, Swing, JavaFX & SWT 1
F Dialog mit Titel, Text und Ok Button AWT, Swing, JavaFX & SWT 2
TheWhiteShadow SWT Dialog Titel setzen AWT, Swing, JavaFX & SWT 6
T iText - JTable to PDF - titel werden nicht angezeigt AWT, Swing, JavaFX & SWT 3
darekkay Tabbed Panes ohne Tab-Titel? AWT, Swing, JavaFX & SWT 2
B setTitle() Titel zentrieren AWT, Swing, JavaFX & SWT 7
K Titel für eingebundene Elemente wie JPanel AWT, Swing, JavaFX & SWT 3
T JTable ohne Titel in der ersten Zeile AWT, Swing, JavaFX & SWT 2
M html im Titel von JFrame AWT, Swing, JavaFX & SWT 9
M JInternalFrame Titel sichtbar setzen AWT, Swing, JavaFX & SWT 2
G JTable ohne Titel AWT, Swing, JavaFX & SWT 5
J Titel im aktive JTabbedPane tab fett darstellen AWT, Swing, JavaFX & SWT 4
O Titel in "Subwin" übergeben AWT, Swing, JavaFX & SWT 3
G Jtabbedpane(SwingConstants.RIGHT) titel nach rechts Wie? AWT, Swing, JavaFX & SWT 2
R JTable: Column Titel zur Laufzeit ändern AWT, Swing, JavaFX & SWT 2
O JPanel titel setzen AWT, Swing, JavaFX & SWT 2
D JTable zeigt Titel nicht an AWT, Swing, JavaFX & SWT 2
C Titel-Balken höhe?! AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen


Oben