【发布时间】:2008-12-16 03:17:40
【问题描述】:
我有一个 JTable 和一个名为 DataTableModel 的自定义 TableModel。我用一组列名和无数据初始化表,如下所示:
books = new JTable(new DataTableModel(new Vector<Vector<String>>(), title2));
JScrollPane scroll1 = new JScrollPane(books);
scroll1.setEnabled(true);
scroll1.setVisible(true);
JSplitPane jsp1 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, scroll1, scroll2);
JSplitPane jsp2 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, inventory, jsp1);
myPanel.add(jsp2, BorderLayout.CENTER);
我稍后想用一组数据更新书籍,并使用以下内容:
DataTableModel d = (DataTableModel)books.getModel();
d.setValues(bookList);
books.setModel(d);
其中 bookList 是一个肯定有数据的Vector<Vector<String>>。但是,尽管所有这些代码都在执行,但它并没有显示在屏幕上。 setValues() 方法的代码是:
public void setValues(Vector<Vector<String>> v) {
values = v;
fireTableDataChanged();
}
我错过了什么吗?
我的DataTableModel的类和方法是(这些方法都是为了返回正确的结果而实现的):
public class DataTableModel extends AbstractTableModel {
public DataTableModel(Vector<Vector<String>> v, Vector<String> c) {}
public int getColumnCount() {
if (values != null && values.size() > 0)
return values.elementAt(0).size();
else
return 0;
}
public int getRowCount() {
if (values != null && values.size() > 0)
return values.size();
else
return 0;
}
public Object getValueAt(int arg0, int arg1) {}
public void setValues(Vector<Vector<String>> v) {}
public Vector<Vector<String>> getValues() {}
public void setColumnNames(Vector<String> columns) {}
public String getColumnName(int col) {}
}
【问题讨论】:
-
mhhh nope.. 我认为你的模型和你的桌子没有连接。你能发布你的实际代码吗?
-
设置模型应该足够了。 .您自己编写了 DataTableModel 代码吗?
-
是的,我做到了。当我检查 DataTableModel 时,它似乎有正确的数据。
标签: java user-interface swing jtable