jtable连接mysql数据库_如何用数据库填充JTable中的数据?

我建议采取以下方法:

创建一个Row类来表示从读取的行ResultSet。这可能是一个简单的包装Object[]。

创建一个List集合,并创建该集合AbstractTableModel支持的子类。

使用SwingWorker填充你List从底层读取ResultSet在后台线程(内即doInBackground()方法)。调用SwingWorker的publish方法将Rows 发布回事件调度线程(例如,每100行)。

当SwingWorker的process方法被调用行的最新块读取,将它们添加到您List和消防适当的TableEventS造成显示更新。

同样,使用ResultSetMetaData确定定义Class中每一列的TableModel。这将导致它们正确渲染(如果仅使用2D Object[][]数组则不会这样)。

这种方法的优点是,在处理大ResultSets时,UI不会锁定,并且随着处理结果,显示将逐渐更新。

编辑

在下面添加了示例代码:

/**

* Simple wrapper around Object[] representing a row from the ResultSet.

*/

private class Row {

private final Object[] values;

public Row(Object[] values) {

this.values = values;

}

public int getSize() {

return values.length;

}

public Object getValue(int i) {

return values[i];

}

}

// TableModel implementation that will be populated by SwingWorker.

public class ResultSetTableModel extends AbstractTableModel {

private final ResultSetMetaData rsmd;

private final List rows;

public ResultSetTableModel(ResultSetMetaData rsmd) {

this.rsmd = rsmd;

this.rows = new ArrayList();

}

public int getRowCount() {

return rows.size();

}

public int getColumnCount() {

return rsmd.getColumnCount();

}

public Object getValue(int row, int column) {

return rows.get(row).getValue(column);

}

public String getColumnName(int col) {

return rsmd.getColumnName(col - 1); // ResultSetMetaData columns indexed from 1, not 0.

}

public Class> getColumnClass(int col) {

// TODO: Convert SQL type (int) returned by ResultSetMetaData.getType(col) to Java Class.

}

}

// SwingWorker implementation

new SwingWorker() {

public Void doInBackground() {

// TODO: Process ResultSet and create Rows.  Call publish() for every N rows created.

}

protected void process(Row... chunks) {

// TODO: Add to ResultSetTableModel List and fire TableEvent.

}

}.execute();

  • 1
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丁子栩

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值