gpt4 book ai didi

java - 从结果集中填充表时更改 jtable 的列类型

转载 作者:行者123 更新时间:2023-11-29 03:23:42 25 4
gpt4 key购买 nike

我有工作人员从结果集中填充 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” 我需要将最后一列 typr 编辑为 jtable 中的 boelan。我该怎么做?

最佳答案

JDBCAdapter , 它扩展了 AbstractTableModel ,说明了关系数据库和 Java 数据类型之间的典型映射。可以看到here ,一个完整的例子可以在 samples/demo/jfc/TableExample 中找到。 , 在 Java SE Development Kit 8u25 Demos and Samples Downloads 中找到.概括地说,

  • 覆盖 getColumnClass() .

  • 获取列的数据 type来自 ResultSetMetaData .

  • 使用 switch(type)返回正确的 type-token .

同时考虑一个 SwingWorker<Row, Row>publish()/process() 中获得更细粒度.

关于java - 从结果集中填充表时更改 jtable 的列类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22180425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com