JTable - 显示为复选框的布尔值,必须是可编辑的

时间:2012-11-09 06:10:28

标签: java swing jtable linkedhashset

好的,我有一个JTable,我从LinkedHashSet of Books中填充。

    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个coloum将布尔状态显示为复选框,我希望在将状态保存回LinkedHashSet并刷新表后能够更改它。

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

1 个答案:

答案 0 :(得分: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); 
}

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