2011-08-04 6 views
4

J'ai besoin de mon application pour définir par programme un paramètre régional de tous les composants sensibles, tels que JTextFields et JTextAreas. J'ai aussi des informations de date (mois écrit en tant que mot) qui est aussi sensible aux paramètres régionaux.paramètres régionaux de paramètres est échoue

j'ai écrit le code suivant, mais il ne semble pas faire le travail:

public static void setLocale(java.awt.Container c /* main form */, Locale locale /* Locale.ENGLISH */) { 

     Component[] components = c.getComponents(); 

     for (Component comp : components) { 
      if (comp instanceof java.awt.Container) 
       setLocale((java.awt.Container) comp, locale); 
      comp.setLocale(locale);  
     } 
    } 

Quel est le problème avec le code?

+0

Quelle est l'erreur que vous voyez? Avez-vous des erreurs? Est-ce que cela fonctionne sur certains composants et pas sur les autres? Est-ce qu'il échoue entièrement? Êtes-vous sûr de passer un Locale valide? – g051051

Répondre

0

Le code suivant devrait faire l'affaire:

public void switchDefaultLocale(Locale l) { 
    if (! l.equals(Locale.getDefault())) { 
     Locale.setDefault(l); 
     JComponent.setDefaultLocale(l); 
    } 
} 

Mais cela aura un effet que sur nouvelle instance de JComponent. Si vous souhaitez mettre à jour des instances existantes, n'oubliez pas d'appeler updateUI() sur chacune d'elles.

+1

celui-ci ne fonctionne pas pour une raison quelconque ... j'ai fait JComponent.setDefaultLocale (Locale.ENGLISH); et ive couru updateUI sur 4 de mes textfields et 1 textarea ... aucun effet – ilja

0

Fondamentalement, je ne vois pas une raison de changer les paramètres régionaux de tous les composants dans l'arborescence des composants. Since La méthode getLocale() recherche automatiquement ses parents.

/** 
* Gets the locale of this component. 
* @return this component's locale; if this component does not 
*   have a locale, the locale of its parent is returned 
*/ 
public Locale getLocale(); 

Il devrait être suffisant pour définir les paramètres régionaux de la racine de l'arbre. Mais si la locale est respectée quelque part, je ne peux pas dire maintenant.

Salut

Questions connexes