我有工人从下面的resultset填充jtable;从表结果集填充结果集时更改jtable的列类型
public class WorkerFillTable extends SwingWorker<DefaultTableModel, DefaultTableModel> {
private DefaultTableModel modeltable;
public WorkerFillTable(DefaultTableModel modeltable) {
this.modeltable = modeltable;
}
@Override
protected DefaultTableModel doInBackground() throws Exception {
ResultSet rs;
Statement stmt;
String query = "select Name,ID,Status,IsActive from current_conf\n" +
"order by Name,ID";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://192.168.130.100;" + "databaseName=DBST;" + "user=" + "user1" + ";" + "password=" + "userpass1" + ";";
Connection con = DriverManager.getConnection(connectionUrl);
stmt = con.createStatement();
rs = stmt.executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();
Vector<String> columnNames = new Vector<String>();
int columnCount = rsmd.getColumnCount();
for (int column = 0; column < columnCount; column++) {
columnNames.addElement(rsmd.getColumnLabel(column + 1));
}
Vector<Vector<Object>> data = new Vector<Vector<Object>>();
while (rs.next()) {
Vector<Object> vector = new Vector<Object>();
for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
vector.add(rs.getObject(columnIndex));
}
data.add(vector);
}
rs.close();
stmt.close();
modeltable = new DefaultTableModel(data, columnNames);
return modeltable;
}
@Override
protected void done() {
try {
TableModel modeltable = get();
sorter = new TableRowSorter(modeltable);
cTable.setRowSorter(sorter);
cTable.setModel(modeltable);
} catch (InterruptedException | ExecutionException ex) {
}
}
}
但所有的列都是字符串。 DB的“IsActive”列有点只有“1”或“0”Jtable将此列显示为“true”或“false”我需要在jtable中编辑最后一列typr到boelan。我该怎么做 ?
编辑:“IsActive”列的数据库是有点只有“1”或“0” –
做了你的官方ORACLE教程“如何使用表”,事件调度线程,SwingWorker,从来没有创建Swing JComponents其模型在工作者线程(doInBackground()) – mKorbel
@mKorbel是的,我读过它们。上面的代码现在成功地工作。只是我想看到列4中的复选框,而不是真或假的字符串。我没有回转工的问题。 –