Bonjour,
A partir d'une boîte de dialogue, je peux changer la langue. Pour cela, j'utilise la classe Locale. Le problème est que je ne sais pas comment rafraichir mon appli pour qu'elle change de langue.
Merci d'avance...
Bonjour,
A partir d'une boîte de dialogue, je peux changer la langue. Pour cela, j'utilise la classe Locale. Le problème est que je ne sais pas comment rafraichir mon appli pour qu'elle change de langue.
Merci d'avance...
TOut dépend quand tu initialises ton objet...
il te suffit d'avoir une méthode init() et de la réappeler...
tu auras droit à un réaffichage complet.
En fait, j'ai 1 fichier pour chaque langue.
j'ai créé une classe Bundle qui me permet de récupérer les mots ou les phrases dans la langue voulue lorsque je le souhaite en faisant un Bundle.getText("Clé"); Il se base sur la locale pour savoir dans quel fichier aller chercher.
Donc, j'initialise juste au lancement du programme la locale que je souhaite et c'est tout.
Est-ce qu'il faut que je regarde qu'elles sont les fenêtres ouvertes et que je rappelle toutes les méthodes d'initialisation du texte sur chacune ?
Salut,
Le mieux je pense serais de te faire un listener qui serait implémenté par toutes les classes qui devront être mises à jours :
Ensuite tu as une classe Controller pour gérer les changements de Locale :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 public interface LocaleListener extends EventListener{ public void localeChanged (); }
Toutes les classes qui implémentent LocaleListener et qui se seront ajouter au controller avec addLocaleListener() seront informé du changement de Locale.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 public class LocaleController { protected EventListenerList listenerList = new EventListenerList(); public void addLocaleListener (LocaleListener l) { listenerList.add(LocaleListener.class, l); } public void removeLocaleListener (LocaleListener l) { listenerList.remove(LocaleListener.class, l); } protected void fireLocaleChanged () { LocaleListener[] listeners = (LocaleListener[]) listenerList.getListeners(LocaleListener.class); for (int i = 0; i < listeners.length; i++) { listeners[i].localeChanged(); } } public void changeLocale (Locale newLocale) { Locale.setDefault(newLocale); fireLocaleChanged(); } }
La méthode localeChanged() de l'interface Listener devrat alors effectué tous les accès au RessourceBundle pour reinitialiser l'affichage...
a++
Merci !!! j'essaie ça de suite !
Ca marche nickel ! Merci l'ami !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager