Swing Locale wechseln, nachdem UIManager schon initialisiert ist

B

Benutzer 08/15

Gast
Hi!

Ich suche schon ewig und finde keine Lösung! Es ist ja wie folgt:

Man kann (oder sollte) die Sprache für ein Programm (
Code:
Locale.setLocale()
) nur ändern, bevor das erste Swingelement initialisiert ist! Denn bei der Initialisierung werden z. B. JFileChooser gleich entsprechend übersetzt.

Genau das ist das Problem. Ändert man die Locale erscheinen zwar neue Fenster mit eigenen Elementen in der neuen Sprache, kompakte Sachen (wie eben JFileChooser) bleiben auf der alten hängen.

Jetzt habe ich zwei Hauptbestandteile:
  1. Ein Loginprogramm, welches eine Maske anzeigt, auf der der Benutzer sich authentifizieren kann und eben seine Sprache festlegen kann.
  2. Das Hauptprogramm, welches in neuer Sprache erscheinen soll.

Die Frames der Programe sind niemals gleichzeitig aktiv. Aber das Loginprogramm und die Hauptklasse besitzen gemeinsam eine Klasse mit statischen Variablen, welche dann für die Datenübergabe dient.

Alternative Möglichkeit wäre es, die Hauptklasse vom Loginprogramm per
Code:
exec()
aufzurufen und die Paramameter per Kommandozeile zu übergeben. Das möchte ich aber vermeiden!!

Hat noch jemand erhellende Tipps?

DANKE!
 

eRaaaa

Top Contributor
Hi!

Ich suche schon ewig und finde keine Lösung! Es ist ja wie folgt:

Man kann (oder sollte) die Sprache für ein Programm (
Code:
Locale.setLocale()
) nur ändern, bevor das erste Swingelement initialisiert ist! Denn bei der Initialisierung werden z. B. JFileChooser gleich entsprechend übersetzt.

Genau das ist das Problem. Ändert man die Locale erscheinen zwar neue Fenster mit eigenen Elementen in der neuen Sprache, kompakte Sachen (wie eben JFileChooser) bleiben auf der alten hängen.

Du könntest [c]JComponent.setDefaultLocale(deinLocale);[/c] aufrufen!
Neue Objekte (z.B. eben JFileChooser) musst du dann natürlich dennoch erstellen, aber so wie ich dich verstanden habe sollte das nicht das Problem sein, da du ja das Hauptfenster eh danach erst erstellst, oder?
 

Ebenius

Top Contributor
Wenn Du die Locale explizit auf den TopLevel-Komponenten (Dein Frame, der File Chooser) mit [c]Component.setLocale()[/c] setzt funktioniert das nicht?

Ebenius
 
B

Benutzer 08/15

Gast
Wenn Du die Locale explizit auf den TopLevel-Komponenten (Dein Frame, der File Chooser) mit [c]Component.setLocale()[/c] setzt funktioniert das nicht?

Ebenius

Fast richtig:
[c]Component[/c] hat kein [c]setLocale[/c]. Es ist [c]JComponent.setDefaultLocale(Locale l)[/c]!
Nach dem posten, bin ich auf die Idee gekommen nach meinen Topic auf Englisch zu googeln:
Change locale after uimanager und siehe da die ersten zwei Treffer sind Treffer in der Bug-Database von Sun / Oracle:
  1. Bug ID: 4423439 JFilechooser (siehe Kommentar vom 19.09.2006)
  2. Bug ID: 4884480 i18n - changes to default Locale not reflected in JOptionPane etc. (siehe Kommentar vom 10.11.2010)
Zusätzlich muss man aber noch den UIManager mit einer neuen Look'n'Feel Instanz füttern (siehe auch zweiter Link Kommentar vom 28.03.2008), damit auch die letzten Felder aktualisiert werden!

Also komplett:
Code:
Locale l = new Locale("en", "US");
Locale.setDefault(l);
Component.setDefaultLocale(l);
UIManager.setLookAndFeel(UIManager.getLookAndFeel());

Das geht!

Danke!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H RCP(SWT) Browser-Widget zeigt keine locale HTML-Dateien an AWT, Swing, JavaFX & SWT 1
B JColorChooser - Locale setzen AWT, Swing, JavaFX & SWT 3
M SWT java.util.Locale wird ignoriert ? AWT, Swing, JavaFX & SWT 5
R KeyStroke und Locale AWT, Swing, JavaFX & SWT 7
T Scene wechseln über ManuItem AWT, Swing, JavaFX & SWT 7
I JavaFX - Pane wechseln über 2. Controller AWT, Swing, JavaFX & SWT 5
melaniemueller Layout wechseln über RadioButtons AWT, Swing, JavaFX & SWT 4
CptK JPanels wechseln AWT, Swing, JavaFX & SWT 2
J splitpane - Wechseln auf anderen Split erkennen AWT, Swing, JavaFX & SWT 11
L Swing Button Farbe ändern/wechseln AWT, Swing, JavaFX & SWT 2
A Inhalt wechseln bei Klick auf Label AWT, Swing, JavaFX & SWT 8
J Tableview - kann man mit Enter die Zellen wechseln AWT, Swing, JavaFX & SWT 1
H JavaFX Probleme Beim Wechseln der scene als .fxml AWT, Swing, JavaFX & SWT 7
P Zwischen verschiedenen Panels wechseln AWT, Swing, JavaFX & SWT 3
Ksanatos Swing Bild (.jpg) einlesen und per Button wechseln AWT, Swing, JavaFX & SWT 9
M JavaFX JRXML Content wechseln AWT, Swing, JavaFX & SWT 3
H JavaFX Kriege fehler beim Fenster wechseln AWT, Swing, JavaFX & SWT 7
P Swing Panels Wechseln AWT, Swing, JavaFX & SWT 9
G Menübar anklicken und Inhalt entsprechend wechseln AWT, Swing, JavaFX & SWT 4
A JButton soll durch anklicken die Farbe wechseln AWT, Swing, JavaFX & SWT 8
D Zwischen Null-Layouts wechseln AWT, Swing, JavaFX & SWT 2
Viktim Swing JTable Mit Tab druch Zeilen Wechseln AWT, Swing, JavaFX & SWT 5
B Swing WindowBuilde: Menu -> anderes Panel wechseln AWT, Swing, JavaFX & SWT 1
T Durch klicken eines Buttons Klasse wechseln AWT, Swing, JavaFX & SWT 2
J Fensterinhalt bei Klick auf Menüitem wechseln AWT, Swing, JavaFX & SWT 1
T Tab per Code wechseln? AWT, Swing, JavaFX & SWT 3
A BorderLayout "Center" Inhalt wechseln AWT, Swing, JavaFX & SWT 1
L JavaFX Scene wechseln unter FX AWT, Swing, JavaFX & SWT 5
V RadioButton aktivieren/deaktivieren; Zustand abfragen und wechseln AWT, Swing, JavaFX & SWT 2
E JavaFX fxml files wechseln AWT, Swing, JavaFX & SWT 4
S Swing, Button benutzen zum Hintergrund wechseln AWT, Swing, JavaFX & SWT 3
A combobox automatisch in ein textfeld wechseln AWT, Swing, JavaFX & SWT 3
bluerob JComponenten verschieben sich bei Fenster wechseln AWT, Swing, JavaFX & SWT 3
A KeyListener Button wechseln & Programm beenden AWT, Swing, JavaFX & SWT 4
S Swing JTabbedPane: Nur nach ButtonClick und nicht nach Click auf Tab ins nächste Tab wechseln AWT, Swing, JavaFX & SWT 2
Jagson Swing Von JDialog zu anderem JDialog wechseln AWT, Swing, JavaFX & SWT 2
M SWT Images bei Toggle Button wechseln AWT, Swing, JavaFX & SWT 3
X zwischen 2 JPanels "elegant" wechseln AWT, Swing, JavaFX & SWT 3
B Panels wechseln auf Knopfdruck AWT, Swing, JavaFX & SWT 17
G FullScreen JFrames wechseln AWT, Swing, JavaFX & SWT 2
E tabpane wechseln mit Button AWT, Swing, JavaFX & SWT 3
F Mit TAB JTextPane wechseln AWT, Swing, JavaFX & SWT 5
D Swing JPanel Hintergundsbild öfters wechseln. AWT, Swing, JavaFX & SWT 3
J LayoutManager Layout über JRadiobutton Wechseln AWT, Swing, JavaFX & SWT 6
J Ansicht wechseln zw. Spielfeld und Optionen AWT, Swing, JavaFX & SWT 3
D Farbe bei einem JButton wechseln AWT, Swing, JavaFX & SWT 4
D Mit der Maus in verschiedene Modi wechseln AWT, Swing, JavaFX & SWT 15
O Zwischen mehreren Bildern wechseln AWT, Swing, JavaFX & SWT 6
G Swing ->mainpanel wechseln bei Klick auf MenuItem (NetB.6 AWT, Swing, JavaFX & SWT 3
S GUI, dynamisches Wechseln von JPanels in einem JFrame AWT, Swing, JavaFX & SWT 2
Kirua Problem: Farbe Dinamic zu wechseln AWT, Swing, JavaFX & SWT 9
G Zwischen Panels in einem JFrame wechseln AWT, Swing, JavaFX & SWT 4
M Fenster wechseln bzw. ein/ausblenden AWT, Swing, JavaFX & SWT 2
P in JFrame zwischen verschiedenen JPanels wechseln AWT, Swing, JavaFX & SWT 7
G GUI - Inhalte wechseln (Eingabe-Assistenten programmieren) AWT, Swing, JavaFX & SWT 2
A SWT ViewPart wechseln AWT, Swing, JavaFX & SWT 2
DonBronson Gezeichnetes Objekt verschwindet nachdem erneut gezeichnet wird AWT, Swing, JavaFX & SWT 8
E Button verschwindet nachdem ein Rechteck gezeichnet wurde AWT, Swing, JavaFX & SWT 5
M JavaFX GUI-Elemente erstellen, nachdem die GUI geladen hat AWT, Swing, JavaFX & SWT 4
M Programm hängt sich auf nachdem repaint() benutzt wurde AWT, Swing, JavaFX & SWT 2
P AWT Fenster aktualisieren, nachdem ich JComboBox ändere AWT, Swing, JavaFX & SWT 9
G Tabelle aktualisiert sich erst, nachdem man auf sie klickt! AWT, Swing, JavaFX & SWT 4
R Thread stoppen, nachdem eine Taste gedrückt wird AWT, Swing, JavaFX & SWT 2
R GUI vollständig anzeigen nachdem sie geladen wurde AWT, Swing, JavaFX & SWT 9

Ähnliche Java Themen


Oben