2008-12-10 7 views

Répondre

8

Ne pas que vous venez d'utiliser:

Component.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT) 

Je crois que les composants Swing ont tous déjà un soutien pour RTL, non?

Vous ne savez pas exactement comment/où vous le feriez pour netbeans.

+2

Il y a aussi Component.applyComponentOrientation (..) pour changer un arbre entier de composant. –

1

Vous pouvez utiliser l'alignement, mais cela ne gèrerait pas les complexités si vous aviez des lettres ou des chiffres anglais intégrés dans votre texte.

Il peut être préférable d'utiliser une sorte de widget texte stylé ou même un visualiseur HTML/texte enrichi.

Je ne pense pas que les JLabels standard puissent gérer les complexités autrement.

+0

JLabel affiche les lettres Unicode. Je pense qu'ils relaient sur les polices du système et si les polices du système peuvent afficher la lettre, alors tout va bien. Par exemple dans mon comp je peux écrire "Extraño" – OscarRyz

5

L'appel de

Component.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT) 

devrait faire l'affaire. Mais assurez-vous d'utiliser les SwingConstants LEADING et TRAILING au lieu de GAUCHE et DROITE dans vos mises en page. La même chose vaut pour GridBagConstraints.LINE_START ou LINE_END au lieu de WEST ou EAST, et probablement quelques cas similaires que j'ai oublié de mentionner.

+0

C'est une excellente réponse, les informations sur l'utilisation des constantes d'alignement les plus significatives peuvent ne pas être données à d'autres personnes ayant des problèmes avec cela. –

0

vous pouvez l'utiliser si vous avez des composants à l'intérieur des panneaux à l'intérieur contentPane

 Component[] component = contentPane.getComponents(); 
    for(int i=0; i<component.length; i++){ 
     component[i].applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 
     Component[] cp = ((Container) component[i]).getComponents(); 
     for(int j=0; j<cp.length; j++){ 
      try{ 
       ((Component) ((JComboBox) cp[j]).getRenderer()).applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 
      }catch(Exception e){ 
       continue; 

      } 
     } 
    } 
Questions connexes