预先存在的 jTable 非常慢 - 即使在很少的记录上
Posted
技术标签:
【中文标题】预先存在的 jTable 非常慢 - 即使在很少的记录上【英文标题】:Pre-existing jTable very slow - even on few records 【发布时间】:2016-07-19 04:58:34 【问题描述】:再次寻求帮助...
我有一个要运行的查询,当我在 Netbeans 中运行它时,它非常快(不到一秒)并且显示信息大约需要一秒。当我运行相同的查询并填充 JTable(在设计时定义,而不是运行时定义)时,速度非常慢。
DB 有大约 600 条记录 - 延迟 20 秒 限制为 10 - 延迟约 10 秒 限制为 1 - 延迟约 3 秒
有没有办法让 Tablemodel “更快”?
我曾考虑过分页,但对于大约 10 条记录,即使延迟 10 秒也不是很好 - 我的代码一定存在固有问题(抱歉,完整的 Java Noob)。
下面是我的代码:
String SQL = "SELECT RecTable.ipkRecNo, RecTable.RecName order by ipkRecNo";
DefaultTableModel defaultModel = (DefaultTableModel) jTable1.getModel();
Statement stmt = con.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery( SQL );
int i = 0;
String PreviousKey = "";
while ( rs.next( ) )
i++;
String MyRecNum = "";
String MyRecName = "";
if (rs.getString(1).trim() == PreviousKey.trim() )
else
MyRecNum = rs.getString(1);
MyRecName = rs.getString(1);
defaultModel.addRow(new Object[]MyRecNum,MyRecName); //1307
【问题讨论】:
AbstractTableModel GUI display issue 可能重复。 在后台查询数据库,为example。 【参考方案1】:addRow 方法的 Javadoc 说明:
在模型中的 row 处插入一行。除非指定了 rowData,否则新行将包含空值。 将生成正在添加的行的通知。
因此,生成了 1307 次事件。这会让你的程序变慢。
【讨论】:
以上是关于预先存在的 jTable 非常慢 - 即使在很少的记录上的主要内容,如果未能解决你的问题,请参考以下文章