我正在尝试设计一些在 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/