2011-09-07 4 views
2

J'ai un JList et dans cette liste, je veux changer la couleur de la police des mots suivants. Quelqu'un a dit que je devais utiliser CellRenderer mais je ne suis pas encore familier avec cela.Comment définir la couleur d'une police?

Maintenant, mon problème est comment puis-je configurer ce moteur de rendu pour changer la couleur de la police?

Une idée à ce sujet?

... Merci

+2

suggérer de toujours avoir un onglet ouvert avec http://download.oracle.com/javas e/tutorial/uiswing/index.html - et lisez rapidement le chapitre xx comment utiliser (avec xx étant le composant que vous ne connaissez pas encore :-) – kleopatra

+0

est-il possible de faire deux couleurs différentes dans un JLabel à l'intérieur d'un liste? – sack

+0

J'ai une liste de mots dans ma liste J et à côté de chaque mot sont leurs définitions. Je veux que la police des mots ait des couleurs différentes de leur définition. Ma question est la suivante: Est-il possible d'avoir deux couleurs différentes dans une liste J? – sack

Répondre

6

Vérifiez la JavaDoc, il pourrait juste avoir ce dont vous avez besoin (l'exemple en haut). Fondamentalement, vous venez de retourner un composant (comme un JLabel) avec une couleur de police configurée.

Edit: puisque vous voulez avoir les mots dans une autre couleur que leurs définitions, ici deux possibilités comment cela peut être fait avec la CellRenderer liste:

  1. Retour un JPanel qui contient 2 JLabels, un avec le mot et une avec les définitions. Les deux étiquettes peuvent avoir différentes couleurs de premier plan. JLabel prend en charge HTML (comme d'autres composants Swing), vous pouvez donc simplement définir le texte de l'étiquette en tant que <html><font color=red>your word</font> - your definitions</html>. Notez que la couleur de premier plan par défaut devrait alors être celle pour les définitions, ou vous pouvez aussi envelopper les définitions avec une balise <font>. Jetez un oeil à ce Tutorial.
+0

J'ai une liste de mots dans ma liste J et à côté de chaque mot sont leurs définitions. Je veux que la police des mots ait des couleurs différentes de leur définition. Ma question est la suivante: Est-il possible d'avoir deux couleurs différentes dans une liste J? – sack

+1

@Mikel oui, c'est possible. Je vais ajouter deux possibilités. – Thomas

+0

ouais .. ça marche .. merci .. ;-) – sack

6

Pour JLabel composants essayer:

new DefaultListCellRenderer(){ 
     @Override 
     public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { 
      JLabel label = (JLabel)super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); 
      label.setForeground(Color.RED); 
      return label; 
     } 
    }; 
+0

ça marche, merci! – sack

+0

J'ai une liste de mots dans ma liste J et à côté de chaque mot sont leurs définitions. Je veux que la police des mots ait des couleurs différentes de leur définition. Ma question est la suivante: Est-il possible d'avoir deux couleurs différentes dans une liste J? – sack

2

considèrent ...., ce serait mieux avec l'aide d'un JTable un TableColumn et sans TableHeader comme JList, démontré here, here, en utilisant prepareRenderer, parce que JList a beaucoup de restriction/méthodes manqués comme JTable

+1

- 1 pour trop compliquer ;-) La question était clairement à propos de JList et la façon de configurer son apparence de cellule est une implémentation de rendu bien .... – kleopatra

+0

et j'ai adoré que @Andrew Thompson l'obtienne de vous, aujourd'hui :-) – mKorbel

Questions connexes