我有工人从下面的结果集中填充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) {
}
}
}
但是所有列都以String形式出现。DB的“ IsActive”列仅具有“ 1”或“ 0”,而Jtable将此列显示为“ true”或“
false”。我需要在jtable中编辑最后一列typr来进行boelan。我该怎么做 ?
JDBCAdapter
进行了扩展AbstractTableModel
,它说明了关系数据库和Java数据类型之间的典型映射。在
Java
SE开发工具包8u25演示和示例下载
中,可以在这里看到它,也可以在samples/demo/jfc/TableExample
其中找到完整的示例。概括来说,
__
覆盖getColumnClass()
。
获取列的数据type
从ResultSetMetaData
。
使用switch(type)
返回正确类型的令牌。
还考虑使用SwingWorker<Row, Row>
中的更细粒度publish()/process()
。
我有worker从resultset填充jtable,如下所示; 但所有列都是字符串。DB的“Isactive”列有点只有“1”或“0”Jtable显示该列为“true”或“false”,我需要在Jtable中编辑最后一列typr来boelan。我怎么做?
问题内容: 如何用对象类型的列表中的值填充JTable。我的代码如下所示: 我已经有了列,列表将来自schedule变量?考虑这些列,如何将其放到表中? 问题答案: 看一下DefaultTableModel。您可以遍历List并为每一行创建Object数组。
我制作了一个显示数据库的GUI JTable。我在尺寸上有一个问题。 如何使JTable的列填充JScrollPane?例如,如果一个表中有很多列,那么它只需保持它们的默认大小并让它们滚动。 如果SQL JTable确实需要滚动,那么我只想让它保持这样,这样它就需要滚动。 这是我制作JTable的代码:
问题内容: 我正在尝试从表单填充bean列表: 因此,在我的Struts2表单中,填充Foo的最佳方法是什么?凭直觉,我想做: 但这不起作用,并且会导致碰撞。我敢肯定答案很简单,而且我忽略了它。 问题答案: 如果我正确理解,您只是想为每个隐藏字段使用不同的名称? 这应该给你相当于 如果您有适当的getter / setter,则应在提交表单时设置所有值。