Как установить цвет шрифта?

У меня есть JList, и внутри этого списка я хочу изменить цвет шрифта следующих слов.

Кто-то сказал, что я должен использовать CellRenderer, но я еще не знаком с этим.

Теперь моя проблема заключается в том, как настроить этот рендерер для изменения цвета шрифта?

Есть идеи по этому поводу?

Спасибо...


person papski    schedule 07.09.2011    source источник
comment
рекомендуется всегда открывать вкладку с download.oracle.com/javase/tutorial/ uiswing/index.html — и быстро прочитайте главу о том, как использовать xx (где xx — это компонент, о котором вы еще не знаете :-)   -  person kleopatra    schedule 07.09.2011
comment
можно ли сделать два разных цвета в одном JLabel внутри списка?   -  person papski    schedule 07.09.2011
comment
У меня есть список слов в моем Jlist, и рядом с каждым словом есть их определения. Я хочу, чтобы шрифт слов имел разные цвета, чем их определение. Мой вопрос в том, возможно ли иметь два разных цвета в одном Jlist?   -  person papski    schedule 08.09.2011


Ответы (3)


Ознакомьтесь с JavaDoc. что вам нужно (пример вверху). В основном вы просто возвращаете компонент (например, JLabel) с настроенным цветом шрифта.

Редактировать: поскольку вы хотите, чтобы слова были другого цвета, чем их определения, вот две возможности, как это можно сделать с помощью средства визуализации ячеек списка:

  1. Возвратите JPanel, который содержит 2 JLabels, один со словом и один с определениями. Обе метки могут иметь разные цвета переднего плана.
  2. JLabel поддерживает HTML (как и другие компоненты Swing), поэтому вы можете просто установить текст метки как <html><font color=red>your word</font> - your definitions</html>. Обратите внимание, что цвет переднего плана по умолчанию должен быть цветом для определений, в качестве альтернативы вы также можете обернуть определения тегом <font>. Ознакомьтесь с этим учебником.
person Thomas    schedule 07.09.2011
comment
У меня есть список слов в моем Jlist, и рядом с каждым словом есть их определения. Я хочу, чтобы шрифт слов имел разные цвета, чем их определение. Мой вопрос в том, возможно ли иметь два разных цвета в одном Jlist? - person papski; 08.09.2011
comment
@Mikel да, это возможно. Я добавлю две возможности. - person Thomas; 08.09.2011

Для компонентов JLabel попробуйте:

    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;
        }  
    };
person oliholz    schedule 07.09.2011
comment
У меня есть список слов в моем Jlist, и рядом с каждым словом есть их определения. Я хочу, чтобы шрифт слов имел разные цвета, чем их определение. Мой вопрос в том, возможно ли иметь два разных цвета в одном Jlist? - person papski; 08.09.2011

подумайте ...., было бы лучше использовать JTable с одним TableColumn и без TableHeader в качестве JList, продемонстрировано здесь, здесь, используя prepareRenderer, потому что JList имеет множество ограничений/пропущенных методов, таких как JTable

person mKorbel    schedule 07.09.2011
comment
- 1 за чрезмерное усложнение ;-) Вопрос был явно о JList, и способ настроить внешний вид его ячейки - это ... ну ... реализация пользовательского средства визуализации. - person kleopatra; 07.09.2011
comment
и мне понравилось, что только @Andrew Thompson получил это от вас сегодня :-) - person mKorbel; 07.09.2011