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

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

2 голосов
/ 07 сентября 2011

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

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

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

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

Спасибо ...

Ответы [ 3 ]

6 голосов
/ 07 сентября 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;
        }  
    };
6 голосов
/ 07 сентября 2011

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

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

  1. Вернуть JPanel, который содержит 2 JLabels, один со словом и один с определениями. Обе метки могут иметь разные цвета переднего плана.
  2. JLabel поддерживает HTML (как и другие компоненты Swing), поэтому вы можете просто установить текст метки как <html><font color=red>your word</font> - your definitions</html>. Обратите внимание, что по умолчанию цвет переднего плана должен быть тем же самым для определений, или вы также можете обернуть определения тегом <font>. Взгляните на этот учебник .
2 голосов
/ 07 сентября 2011

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

...