Разные иконки для разных элементов JList

215
10 декабря 2017, 11:37

Делаю список логических дисков, назначаю ему рендер. В этом коде рендер стандартный с небольшими настройками цвета фона и иконка дефолтной темы.

public class mainFrame  {
    public static JList list;
    public static File[] data;
    public mainFrame() {
        data =  File.listRoots();
        list = new JList(data);
        list.setCellRenderer(new MyListCellRenderer());
    }
    class MyListCellRenderer extends DefaultListCellRenderer{
        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
        Component component = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);     // Получаем ссылку на Component от DefaultCellRenderer
        JLabel label = (JLabel) component; // Приводим ссылку к типу JLabel
        Icon icon = UIManager.getIcon("Tree.closedIcon"); // Корректируем JLabel с помощью добавления к ней иконки
        label.setIcon(icon);        
        super.setBackground(isSelected ? Color.ORANGE : Color.white);
        return label;                                       // Возвращаем получившийся JLabel, который отображается в JList
    }
}

В другом примере подсмотрел такой код рендерера:

@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
super.setBackground(isSelected ? Color.green : Color.white);
    if( !value.equals("..") ) {
        File file = new File(value.toString());
        if( file.isFile() ) {
            super.setIcon(iiFile);
        } else super.setIcon(iiFolder);
    } else if(value.equals("..")) {
        setIcon(null);
    }
    return this;
}

Здесь автор проверяет папка это или файл, проверяет наличие корневой директории. Я пробовал использовать этот код в моем рендере, но почему то он не работает. При запуске программы назначает иконку Папки для дисков, если войти в один из них, то на всех элементах(папках и файлах) так же назначает иконку Папки. А хочется чтобы диски имели иконку диска, папки иконку папки, файлы - файлов.

Подскажите, как довести сие до ума?

READ ALSO
Решение уравнений в android studio

Решение уравнений в android studio

В целом теоретический вопросИмеется: Приложение передающее данные с plain text в новую активность(intent) Нужно реализовать:решение квадратного...

475
Помогите с Jubula

Помогите с Jubula

Может кто работает/ работал с данным фреймворком, подскажите хороший гайд, я уже и офф сайты посмотрел и всякие туториалы, но не особо понимаю...

202
Частотный анализ n-грамм

Частотный анализ n-грамм

Генерируется большая строка из случайных символов, далее необходимо провести частотный анализ на битовом уровнеТ

270
Добавить запись в базу с id AUTO_INCREMENT

Добавить запись в базу с id AUTO_INCREMENT

Работая в NetBeansВ Java новичок

255