Text von Menüeintrag ändern

jlagetar

Grünschnabel
Hallo,

Schreib gerade an einem Rich Client welcher über ein XML File verschiedene Sprachinformationen erhält. Ich kann alle Texte verändern (Actions, Toolbar-Tooltips usw.) nur gibt es für einen MenuManager keine set-Methode für den MenuText. So kann ich z.b. nicht von Datei auf File oder von Ansicht auf View den Text ändern.

Gibt es irgendwie eine Möglichkeit diesen Text zu ändern?

Am besten wärs wenn man es während der Programmleufzeit ändern könnte (somit soll das Umschalten von Sprache möglich sein ohne das Programm neu zu laden)

lg Jozo
 
Danke für die schnelle Antwort,

Die Idee hatte ich schon bevor Ich angefangen habe das Programm zu schreiben, aber leider muss ich es mittels XML-Files machen, da die Kunden dies so wollen (zur Zeit 4 ausländische Kunden).
Außerdem muss auch mit den Properties der Menüeintrag zur Laufzeit geändert werden, was ja meine eigentliche Frage ist:

Lg Jozo
 
Ich denke mal, dass du dein Menu mittels einer XML-Datei konfigurierst, oder?
Dann schreibst du halt nicht die genaue Bezeichnung in das XML-File sondern den Schüssel der Properties-Dateien und so müsste es dann sobald die Sprache umgestellt wurde, sich alles ändern.

Wenn du es wirklich so machen musst, dann wäre die einzige Idee die ich hätte, dass du durch dein Menu durch iterierst und dann den Text selbst änderst.

MFG

zEriX
 
Das Programm läuft im Grunde so ab:

Laden der Workbench (Initialisieren aller Textinhalte/Actions/Menüeinträge/Toolbars usw.)
Ausgeben der GUI
Warten auf Benutzerinteraktion
wenn ich nun einen Button oder Menüentrag drücke/auswähle startet eine Action; diese kann dann bestimmte Funktionen durchführen. In meinem Fall soll sie nur die Texte ändern (was nichts anderes ist als ein Iterieren durch alle Actions die Ich habe, da jegliches vom Benutzer auswählbares Element einer Action entspricht)
Nur bei den Menüroots wie Datei,Bearbeiten, Hilfe,Ansicht usw. kann man den Text nicht dirket setzen wie es bei den Actions der Fall ist, da der Menütext eine private Variable ist ohne Set-Methode.
Ich hab zwar das Programm dahingehennd geändert, das beim Auswahl einer anderen Sprache dies in ein Config-File gespeichert wird, und das Programm beim nächsten Start dann in der ausgewählten Sprache erscheint (da beim Initialisieren der Text gesetzt werden kann).
Das Problem ist in meinem Fall dass das Programm von vielen Benutzern gleichzeitig verwendet wird, und es viele Daten enthält (Tabellen,Views, Trees usw.), somit muss man den TExt während der Laufzeit ändern, da ein Abspeichern der Daten und neuladen unmöglich ist (extreme Datenmengen können sich ansammeln, da dass Programm bei einer Versicherung/Bank im EInsatz ist, und nie geschlosssen wird)

Hoff die Problemstellung ist jetzt ein bisschen klarer geworden.

Das setzten des Textes bei einem MenuManager funktioniert nicht, alles andere (Textressourcen usw.) ist vorhanden und funktioniert.

Lg Jozo
 
Zurück