我有一個JTable
自定義TableModel
叫DataTableModel
。我初始化了一組列名的表,沒有數據如下:JTable更新沒有出現
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);
其中書目是一個確實有數據的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沒了..我想你的模型和你的表沒有連接。你可以發佈你的實際代碼..? – OscarRyz 2008-12-16 04:32:15
設置模型應該足夠了。 。你編碼DataTableModel你自己? – OscarRyz 2008-12-16 04:34:39
是的,我做到了。當我檢查DataTableModel時,它似乎有正確的數據。 – Elie 2008-12-16 13:05:54