papski
papski

Reputation: 1281

How to set the color of a Font?

I have a JList and inside that list, I want to change the color of the font of the following words.

Someone said that I have to use CellRenderer but I'm not yet familiar with that.

Now, my problem is how can I setup this renderer to change the color of the Font?

Any idea about this matter?

Thanks...

Upvotes: 2

Views: 2620

Answers (3)

Thomas
Thomas

Reputation: 88707

Check out the JavaDoc, it might just have what you need (the example at the top). Basically you just return a component (like a JLabel) with a configured font color.

Edit: since you want to have the words in a different color than their definitions, here two possibilities how that can be done with the list cell renderer:

  1. Return a JPanel that contains 2 JLabels, one with the word and one with the definitions. Both labels can have different foreground colors.
  2. JLabel supports HTML (like other Swing components do), so you might just set the text of the label as <html><font color=red>your word</font> - your definitions</html>. Note that the default foreground color should then be the one for the definitions, alternatively you can wrap the definitions with a <font> tag as well. Have a look at this Tutorial.

Upvotes: 6

mKorbel
mKorbel

Reputation: 109815

consider ...., that would be better using a JTable with one TableColumn and without TableHeader as the JList, demonstrated here, here, by using prepareRenderer, because JList has lots of restriction/missed methods as JTable

Upvotes: 2

oliholz
oliholz

Reputation: 7507

For JLabel components try:

    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;
        }  
    };

Upvotes: 6

Related Questions