Как включить события для компонентов в JList - PullRequest
1 голос
/ 19 мая 2009

Я использую пользовательский рендер в JList, но ни один из отображаемых компонентов не доступен.

list.setCellRenderer(new ListCellRenderer() {

    public Component getListCellRendererComponent(JList list, Object value,
            int index, boolean isSelected, boolean cellHasFocus) {

        JCheckBox c = new JCheckBox();
        JButton b = new JButton("My Button!");

        JPanel p = new JPanel(new FlowLayout());
        p.add(c);
        p.add(b);

        if (isSelected) {
            p.setBackground(Color.LIGHT_GRAY);
        }
        return p;
    }
});

Нажатие на флажок или кнопку ничего не делает. Я также пытался добавить ActionListener к кнопкам, но он не срабатывал при нажатии. Единственное, что работает, это цвет фона при выделенном элементе (см. Скриншот).

Когда я нажимаю кнопку, нет даже "анимации щелчка".

альтернативный текст http://foto.darth.cz/pictures/2009-05-19_151057.png

Итак, мой вопрос: нужно ли делать что-то еще, чтобы включить выравнивание на визуализированных компонентах?

1 Ответ

3 голосов
/ 19 мая 2009

То же, что и для таблиц. Компонент рендерера на самом деле не является реальным компонентом. Это как шаблон, используемый для рисования поддельного компонента. Почему бы вам не попробовать вставить ваши компоненты в JScrollPane или превратить их в JTable в один столбец и вместо этого внедрить соответствующий рендерер / редакторы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...