Как заставить столбец JTable содержать флажки?

Предисловие: Я ужасен с Java и хуже с Java ui компоненты.

Я нашел несколько различных учебных руководств о том, как добавить кнопки к таблицам, однако я борюсь с добавлением флажков. У меня должен быть столбец, который тянет текстовое поле, отмеченное на значении по умолчанию (рендерер ячейки, я думаю дескрипторы, что), затем по щелчку tickbox, удаляет галочку у поля, перерисовки сказали, что поле, и исчерпывает событие где-нибудь, я могу отследить.

в настоящее время у меня есть пользовательский cellrenderer:

public class GraphButtonCellRenderer extends JCheckBox implements TableCellRenderer {
public GraphButtonCellRenderer() {
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    if(isSelected)
        setSelected(true);
    else
        setSelected(false);
    setMargin(new Insets(0, 16, 0, 0));
    setIconTextGap(0);

    setBackground(new Color(255,255,255,0));
    return this;
}}

Который в настоящее время обрабатывает рисование поля галочки, но только отмечает и удаляет галочку у поля, если та строка выбрана. Но я не знаю, как обработать события. Действительно то, что я спрашиваю, является возможно ссылкой на хорошее учебное руководство о том, как добавить флажки чисто к JTable. Любой помогает, значительно ценится :)

8
задан kleopatra 17 August 2012 в 16:00
поделиться

3 ответа

Нет необходимости создавать свой собственный рендерер таблиц. Вот более простой пример. Просто создайте пользовательскую модель таблицы и для заданного столбца верните класс Boolean for:

public Class getColumnClass(int column)

Если вы хотите, чтобы столбец был редактируемым, верните true for

public boolean isCellEditable(int row, int column)

JTable позаботится о рендеринге за вас.

Другой пример здесь.

24
ответ дан 5 December 2019 в 05:25
поделиться

Самое простое решение - использовать DefaultTableModel и использовать в качестве значений булевы объекты.

3
ответ дан 5 December 2019 в 05:25
поделиться

Вот простой довольно сложный пример с использованием TableCellRenderer и TableCellEditor. См. также, Концепции: Редакторы и рендереры.

Дополнение: Замечание @Jay Askren верно подмечено. Рендерер по умолчанию для Boolean.class, как описано в учебнике, может быть всем, что вам нужно.

4
ответ дан 5 December 2019 в 05:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: