java - JTable 的一个大查询还是两个小查询?

标签 java mysql swing jtable

我正在尝试设计一些在 JTable 中显示 MySQL 数据库内容的 java 程序。我不知道什么更好:将整个表加载到 Vector,然后从中为表的每个单元格放置数据。或者将每个单元格加载为单独的查询?

public class DBTableMode extends AbstractTableModel {   
...        
Vector<Vector<Object>> data = dao.getWholeData(); //my getter of whole data table
...
public Object getValueAt(int rowIndex, int columnIndex) {
        data.elementAt(rowIndex).elementAt(columnIndex);
}
...

public class DBTableMode extends AbstractTableModel {
...
public Object getValueAt(int rowIndex, int columnIndex) {
        dao.getCell(rowIndex, columnIndex);

}
...

其实我不知道JTable的运行原理,如果它加载数据onScrolling那么第二种变体会好很多。 那么,什么对我来说更好?

最佳答案

DefaultTableModel 的便利性无与伦比, 但是 AbstractTableModel 提供比内部数据表示更大的灵 active 。我会使用更新的东西并且没有 Vector 的同步开销.这example使用 Map<String, String> .在任何情况下,通过将选择封装在你的 TableModel 中,您保留随着程序的发展而改变主意的选择权。

同时考虑 SwingWorker , 如图所示 here , 在后台构建模型。

JTable本身就是观点。它的渲染是fairly efficient已经。

关于java - JTable 的一个大查询还是两个小查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9690172/

相关文章:

mysql - 是否可以在 MySQL 更新语句中有条件地只设置一些值?

java - 在卡片布局中切换卡片后运行方法

java - 如何更改JPanel的背景图片

java - 主线程上的 View.postDelayed() 和 Handler.postDelayed() 有什么区别?

java - 在 Apache Camel 中多播文件的问题

java - 这是使 java.text.DateFormat 线程安全的正确方法吗?

mysql - 如何查找列名是否是跨各种数据库的保留关键字

java - 在Spring Data JPA中获取列的所有记录,即使我们将其指定为参数

java - JPanel 不显示任何内容

java - 使用 PHP 和 Java 以流形式解密/加密文件 - 填充?