-
JComboBox et ascenseur.
Bonjour,
j'ai un Jcombobox dans lequel je sélectionne automatiquement une valeur (monJcombo.setSelectedIndex(i);). Mon soucis c'est que lorsque l'utilisateur ouvre le combo l'élément sélectionné est affiché en dernier dans le cadre visible de la liste. Mais je voudrais qu'il soit en premier.... (c'est à dire que le cadre présente l'element sélectionné et ces suivants.)
J'ai cherché à utiliser la fonction scrollRectToVisible que j'ai déjà vu utilisé dans des cas similaires mais dans des textArea ou JPanel. Cependant, je n'ai pas trouvé comment l'utiliser dans le Jcombox pour mon soucis.
Si vous avez une réponse à mon problème... merci.
-
Le scroller de la JComboBox est géré (avec le L&F Metal) par la classe BasicComboPopup dans le package javax.swing.plaf.basic (attribut scroller).
Je te conseillerais, toujours dans cette classe de regarder la JList de la popup (getList()) et de forcer le JViewPort avec un setViewPosition(Point p).
Le problème va être que pour accèder à cette classe (BasicComboPopup), tu risque de devoir redéfinir un composant UI pour ta JComboBox.
Mais ça me parait assez compliqué.
-
oui je veux bien mais comment on accéde à l'objet de la classe BasicComboPopup depuis je JComboBox?
donc quel composant UI dois-je utiliser pour ma JComboBox?
n'y a t-il aucun autre moyen de résoudre mon problème?
-
Hum j'ai bien peur que non.
Regarde ce lien : http://forum.java.sun.com/thread.jsp...sageID=2474966
il semblerait qu'il faille que tu crées ton MyComboBoxUI puis que tu fasses myCombo.setUI(new MyComboBoxUI())
Il faut que tu redéfinisses la méthode createPopup() pour accéder à la popup.
Je te souhaite de trouver plus simple.
-
merci beaucoup! je vais étudier cela de plus près donc et si je trouve une meilleure solution je vous la transmet.