というJTable
カスタムTableModel
がありDataTableModel
ます。次のように、一連の列名とデータなしでテーブルを初期化しました。
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) {}
}