Вопрос

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

Я нашел несколько разных учебных пособий о том, как добавлять кнопки в таблицы, однако я борюсь с добавлением флажков. Мне нужно иметь столбец, который рисует текстовое поле, отмеченное по умолчанию (визуализатор ячейки, я думаю, обрабатывает это), затем на клик Tickbox, Purnicks Box, RedRaws, указанный в коробке, и срабатывает с события где-то, что я могу отследить.

В настоящее время у меня есть пользовательский 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. Любая помощь очень ценится :)

Это было полезно?

Решение

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

public Class getColumnClass(int column)

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

public boolean isCellEditable(int row, int column)

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

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

Другие советы

Как говорят Peter, легко используя расширенный класс defaulttablemodel, ex:

class NewTableModel extends DefaultTableModel{
        public Class<?> getColumnClass(int columnIndex) {
            return getValueAt(0, columnIndex).getClass();
        }
    }

Вот а просто Довольно разработано пример с помощью TableCellRenderer а также TableCellEditor. Отказ Смотрите также, Концепции: редакторы и рендеры.

Приложение: @jay ascren's Point хорошо воспринимается. Рендерер по умолчанию для Boolean.class, Как описано в руководстве, может быть все, что вам нужно.

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

В дизайнере Swing Set Column Type в Boolean

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top