使用数据库数据在 DefaultTableModel 中插入复选框
Insert checkbox in DefaultTableModel using database data
我在 NetBeans 中使用 DefaultTableModel
来显示 MySQL 数据库中的记录。我的数据能够显示,但我想要的是在 table.
的末尾显示一个复选框列
我知道它需要被覆盖,但我不知道如何以及从哪里开始。我从互联网上看到了大量的例子,但他们使用的是静态字符串数据,而不是来自数据库。直到现在我还是不明白。非常感谢您的帮助。
下面是我的示例代码。
try {
conn = DatabaseConnect.connect();
ps = conn.prepareStatement("SELECT productID, name, quantity, price, checked FROM tbl_inventory");
rs = ps.executeQuery();
jTable2.setModel(DbUtils.resultSetToTableModel(rs));
} catch(SQLException ex) {
}
jTable2
能够显示我在 tbl_inventory
的记录。我的数据库 table tbl_inventory
中的 "checked" 列的默认布尔值为 0。但我不知道如何在我的 JTtable
中将其显示为复选框。
The "checked" column from my database table tbl_inventory has default boolean value of 0. But I don't know how to display it as checkbox in my JTtable.
最简单的方法是在创建 TableModel 时将 "checked" 数据转换为布尔值。然后将使用默认的renderer/editor。
jTable2.setModel(DbUtils.resultSetToTableModel(rs));
这意味着您不能使用上述方法。您需要自己复制数据,然后在选中的列上进行转换。
查看 Table From DataBase。最后一个示例 Table From Database Example
显示了如何在不进行任何转换的情况下复制数据。
您需要使用以下内容修改代码:
while (rs.next())
{
Vector<Object> row = new Vector<Object>(columns);
for (int i = 1; i <= columns; i++)
{
if (i == ?) // convert checked column
{
int value = rs.getInt(i);
row.addElement( value == 0 ? Boolean.FALSE : Boolean.TRUE );
}
else
row.addElement( rs.getObject(i) );
}
data.addElement( row );
}
我在 NetBeans 中使用 DefaultTableModel
来显示 MySQL 数据库中的记录。我的数据能够显示,但我想要的是在 table.
我知道它需要被覆盖,但我不知道如何以及从哪里开始。我从互联网上看到了大量的例子,但他们使用的是静态字符串数据,而不是来自数据库。直到现在我还是不明白。非常感谢您的帮助。
下面是我的示例代码。
try {
conn = DatabaseConnect.connect();
ps = conn.prepareStatement("SELECT productID, name, quantity, price, checked FROM tbl_inventory");
rs = ps.executeQuery();
jTable2.setModel(DbUtils.resultSetToTableModel(rs));
} catch(SQLException ex) {
}
jTable2
能够显示我在 tbl_inventory
的记录。我的数据库 table tbl_inventory
中的 "checked" 列的默认布尔值为 0。但我不知道如何在我的 JTtable
中将其显示为复选框。
The "checked" column from my database table tbl_inventory has default boolean value of 0. But I don't know how to display it as checkbox in my JTtable.
最简单的方法是在创建 TableModel 时将 "checked" 数据转换为布尔值。然后将使用默认的renderer/editor。
jTable2.setModel(DbUtils.resultSetToTableModel(rs));
这意味着您不能使用上述方法。您需要自己复制数据,然后在选中的列上进行转换。
查看 Table From DataBase。最后一个示例 Table From Database Example
显示了如何在不进行任何转换的情况下复制数据。
您需要使用以下内容修改代码:
while (rs.next())
{
Vector<Object> row = new Vector<Object>(columns);
for (int i = 1; i <= columns; i++)
{
if (i == ?) // convert checked column
{
int value = rs.getInt(i);
row.addElement( value == 0 ? Boolean.FALSE : Boolean.TRUE );
}
else
row.addElement( rs.getObject(i) );
}
data.addElement( row );
}