AbstractTableModelを使用したJTableの作成
各JTableには、モデルが関連付けられています。気づいていないかもしれませんが、2次元配列を作成するとデフォルトで作成されます:オブジェクト[][] data = {{1,2,3},{2,3,4},{4,5,6},{7,8,9}}; 文字列[] title= {"Column1", "Column2", "Column3"}; JTable の例JTable = 新しいJTable(データ、列名)}; |
幸いなことに、 JTableオブジェクトは、テーブル・テンプレートを経由せずに使用できます。たとえば、セル (2, 3) のメソッドを調べるには、メソッド getValueAt:
System.out.println(exampleJTable.getValueAt(2, 2)); |
TableModel byDefault = exampleJTable.getModel(); System.out.println(exampleJTable.getValueAt(2, 2).toString()); |
TableModel インターフェイスを実装するクラスには、DefaultTableModel と AbstractTableModel.
- AbstractTableModel は、ほとんどの TableModel メソッドを実装します。
- DefaultTableModel は AbstractTableModel のサブクラスで、データが配列に格納される 3 つのメソッドが実装されています.
- public int getRowCount(): 戻り値 行数.
- public int getColumnCount(): 列数を返す.
- public Object getValueAt(int row, int column): (row, column) ボックス内のオブジェクトを返します。
AbstractTableModel を使用すると、データを自由に格納できますが、JTable との対話を可能にするメソッドを実装する必要があります。実装されるメソッドの数は、データの管理方法によって異なります。読み取るには、上記の3つのメソッドだけで十分ですが、変更(行または列の追加、削除)には、テーブルのテンプレートに格納されているデータを変更する他のメソッドを実装する必要があります.
テーブルモデルの作成
class Model extends AbstractTableModel{このコードは、テンプレートを table
private Object[][] data;
private String[] title;
public Model(Object[][] data, String[] title){
this.data = data;
this.title = タイトル;
}
/**
* カラムタイトルとインデックスを返す
*/
public String getColumnName(int col) {
return this.title[col];
}
/**
* 列数を返します
*/
public int getColumnCount() {
return this.title.length;
}
/**
* 行数を返します
*/
public int getRowCount() {
return this.data.length;
}
/**
* 行と列の交点にあるオブジェクトを返します
*/
public Object getValueAt(int row, int col) {
return this.data[row][col];
}
/**
* 行と列の交点でオブジェクトを変更
*/
public void setValueAt(Object value, int row, int col) {
this.data[row][col] = value;
}
}
//JTable JTableテーブル= new JTable(); //テンプレートの作成 Model =new Model(data, title); //テンプレートをJTable table.setModel(model); |