salut tous,
j'ai un jcombobox qui est remplis par des donnees en arabe(de droite a gauche) donc je veut que l'orientation soit de R_TO_L.
merci pour le help
Version imprimable
salut tous,
j'ai un jcombobox qui est remplis par des donnees en arabe(de droite a gauche) donc je veut que l'orientation soit de R_TO_L.
merci pour le help
C'est a dire ? Tu veux que le texte s'affiche de gauche<-droite (ce qui devrait etre le cas par defaut avec de l'arabe) ? ou que la fleche de la combo soit sur la gauche ?
- dans le premier cas, ca devrait normalement etre le cas par defaut, les renderer de texte Java etant capables de detecter le texte s'affichant de gauche<-droite ou bidirectionnel (ex : melange de romain et d'arabe). Si ce n'est pas le cas, essaie de mettre la Locale de la combo box a une langue arabe (lang_ar je crois, en general pas besoin de specifier un code de pays) ou de modifier son ListCellRenderer (idem en specifiant/forcant la Locale).
- pour le second cas, n'ayant jamais vu d'interface graphique en arabe, hebreu ou l'une des autre langues s'ecrivant gauche<-droite, j'ignore s'il est de convention (ex : GUI design guidelines) de mettre la fleche de la combo de l'autre cote du composant ou s'il reste du meme cote que dans les langues s'ecrivant de gauche->droite. Essaie quand meme en modifiant la Locale du composant, on ne sait jamais.
Voir :
java.awt.ComponentOrientation
java.util.Locale
merci bouye,
Dans mon cas j'ai reussit a mettre le fleche de l'autre cote de la combobox mais je veut que les donnees dans le combox soient aligner à droite.
avec ce message il y a une image de ce combox que je reuissit a faire.
Salut,
Est-ce que tu pourrais poster le code où tu remplis ta ComboBox?
Bizarre, l'un aurai du se faire avec l'autre. Si tu redefini ton propre ListCellRenderer en utilisant DefaultListCellRenderer (qui herite de JLabel) tu devrais pouvoir specifier l'alignement a droite ou a gauche du texte.
merci pour vous de me rependre, mais le probleme que j'utilise jdeveloper10g et il remplit automatiquement le combobox de puis la base de donnees.Citation:
Envoyé par bouye
Si tu as une reference sur la combo, tu peux manuellement changer le ListCellRenderer par un tien customise qui teste l'affichage avec un alignement a droite.
La valeur par defaut de l'alignement horizontal n'est ni RIGHT, ni LEFT. C'est LEADING qui est sense s'adapter a la Locale active. Donc si la Locale du composant n'est pas mis a une langue arabe, il est normal que l'alignement se fasse a gauche si la Locale par defaut (celle du systeme) est le francais par exemple.Code:
1
2
3
4
5
6
7
8
9 combo.setRenderer(new DefaultListCellRenderer() { /** {@ineheritDoc} */ @Override public void getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); setHorizontalAlignment(RIGHT); //voir commentaires plus bas. return this; } });
A voir egalement s'il s'avere necessaire de modifier l'editor (pour quand le menu deroulant n'est pas deplie).
Dans la mesure du possible essaie cependant juste en modifiant la Locale de la combo avant de faire des modifications lourdes. Si ca se trouve tout fonctionnera bien du premier coup.
Citation:
Envoyé par bouye
Merci Bouye,
tu m'as aider beaucoup.
c'est la bonne solution mais avec un seul changement.
on doit changer le type de retour de la fonction "getListCellRendererComponent" vers le type Component au lieu de "void".
merci une autre fois
donc la solution est :
Code:
1
2
3
4
5
6
7
8
9
10 jComboBox1.setRenderer(new DefaultListCellRenderer() { /** {@ineheritDoc} */ @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); setHorizontalAlignment(RIGHT); //voir commentaires plus bas. return this; } });
Oui désolé, j'ai tapé ca un peu vite :oops:.