Добавление CheckBox в DefaultTableModel - PullRequest
3 голосов
/ 30 ноября 2010

У меня есть DefaultTableModel, которая заполняется массивом Object [] [].

Теперь я хочу добавить столбец с флажками и выполнить соответствующие операции.

Когда я добавляю флажокв массив Object [] [] и просмотреть его, я получаю текст, отображаемый

'javax.swing.JCheckBox [, 0,0,0x0 ....', как мне заставить его отображать флажоки добавить к нему действия?

Ответы [ 5 ]

4 голосов
/ 30 ноября 2010

JTable по умолчанию имеет флажок рендерера / редактора для логических значений.Просто сделайте TableModel#getColumnClass возврат Boolean.class для данного столбца.

2 голосов
/ 04 мая 2013

Вы также можете просто получить класс вместо жесткого кодирования каждого возвращаемого типа.Вот пример для метода переопределения:

 //create the table 
DefaultTableModel tableModel = new DefaultTableModel(data, columnNames)
//override the method


               {
        public Class<?> getColumnClass(int colIndex) {

                return getValueAt(0, colIndex).getClass();

            }

Затем, когда вы создаете таблицу, вы инициализируете ее следующим образом:

 data[i][12] = new Boolean(false);

, что делает поле не отмеченным:)

2 голосов
/ 30 ноября 2010

как я могу показать галочку

См. Ответ Улена

и добавить к нему действия?

Используйте TableModelListener. Что-то вроде:

public void tableChanged(TableModelEvent e)
{
    if (e.getType() == TableModelEvent.UPDATE)
    {
        int row = e.getFirstRow();
        int column = e.getColumn();

        if (column == ?)
        {
            TableModel model = (TableModel)e.getSource();
            Boolean value = (Boolean)model.getValueAt(row, column));

            if (value.booleanValue())
                // add your code here
        }
    }
}
0 голосов
/ 30 ноября 2010

Нет, вы не можете предоставить компонент свинга в виде массива объекта модели [].Это должно быть зарегистрировано как редактор ячеек в столбце.

В любом случае по умолчанию DefaultTableModel поддерживает флажок в качестве редактора для столбцов, в которых хранятся значения типа Boolean класса.

Итак, в массиве передайте Boolean.TRUE/Boolean.FALSE объект и установить таблицу как редактируемую.Затем таблица автоматически отображает флажок для вас.

Вам нужно зарегистрировать редактор для каждого типа класса

0 голосов
/ 30 ноября 2010

Вы можете использовать пользовательское средство визуализации ячеек таблицы.

См. Здесь

http://www.exampledepot.com/egs/javax.swing.table/CustRend.html

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