3

好的,所以我有一个从书籍 LinkedHashSet 填充的 JTable。

    public static void LibToArray(){
    rowData = new Object[Book.bookList.size()][5];
    int i = 0;
    Iterator it = Book.bookList.iterator();
    while(it.hasNext()){
        Book book1 = (Book)it.next();
        rowData[i][0] = (Integer)book1.getId();
        rowData[i][1] =  book1.getTitle();
        rowData[i][2] =  book1.getAuthor();
        rowData[i][3] = (Boolean)book1.getIsRead();
        rowData[i][4] =  book1.getDateStamp();
        i++;
        }
    }

我的问题是我希望第 4 个列将布尔状态显示为复选框,并且我希望它能够在将状态保存回 LinkedHashSet 并刷新表后进行更改。

对不起,我是初学者,如果您能给我一些建议,将不胜感激。

4

1 回答 1

8

在表模型中,作为特定列的getColumnClass()回报Boolean.class。例如对于AbstractTableModelDefaultTableModel扩展:

@Override
public Class<?> getColumnClass(int columnIndex) {
    if (columnIndex == 3)
        return Boolean.class;
    return super.getColumnClass(columnIndex);
}

此外,要使单元格可编辑,请覆盖isCellEditable(),例如:

@Override
public boolean isCellEditable(int row, int col) {
    return (col == 3); 
}

有关表模型的更多详细信息,请查看如何使用表教程。在同一教程中,有一个带有复选框列的表格示例。

于 2012-11-09T06:22:05.270 回答