Bonjour,
Quelqu'un saurait-il comment centrer horizontalement le texte s'affichant dans un JSPinner ou un JComboBox ?
Bonjour,
Quelqu'un saurait-il comment centrer horizontalement le texte s'affichant dans un JSPinner ou un JComboBox ?
Eh bien, cela ne semble pas permettre l'alignement de l'affichage à l'intérieur du composant. J'avoue ne pas vraiment savoir l'utilité de ces 2 méthodes (si tu l'a connais n'hésite pas à m'en faire part) que sont
setAlignmentY(float);
setAlignmentX(float);
Cela ne semble pas correspondre a ce que je cherche.
Pour les JComboBox, il semble y a voir la possibilité d'un Renderer, ce qui résoud le problème. Mais pour un JSpinner, je cherche toujours...
Voici une méthode permettant de récupérer le DefaultEditor du composant sous forme de JTextField :
Il suffit alors d'utiliser la méthode setHorizontalAlignment(int) du JTextField.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public JTextField getTextField(JSpinner spinner) { JComponent editor = spinner.getEditor(); if (editor instanceof JSpinner.DefaultEditor) { return ((JSpinner.DefaultEditor)editor).getTextField(); } else { System.err.println("Unexpected editor type: " + spinner.getEditor().getClass() + " isn't a descendant of DefaultEditor"); return null; } }
EDIT : Ce code est pour le JSpinner. Pour le JComboBox, il faut utiliser un renderer (DefaultListCellRenderer).
setAlignmentY(float);
setAlignmentX(float);
je sais pas non plus a quoi ca sert, peut-etre la facon d'afficher l'element (et non son contenu)
ba bonne chance.
Au pire, tu hérite, tu redéfénis la methode paintComponent() (ou une autre, je sais plus exactement) en recopiant le code du JSpinner mais en changeant la position où tu écrit le texte.
(On peut faire un petit calcul avec l'espace que l'on dispose et la taille d'affichage du texte)
comme ça ?
je ne l'ai pas testé, à voir....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 DefaultListCellRenderer centr = new DefaultListCellRenderer(); centr.setHorizontalAlignment(JLabel.CENTER); jCombobox1.setRenderer(centr);
Partager