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));
JTableオブジェクトはDefaultTableModel テーブル内のデータの表示方法を制御し、データ管理をテーブルモデルに任せるためです。モデルがユーザー定義でない場合は、DefaultTableModel が使用されます。これが<正しいかどうかは、>JTable.

TableModel byDefault = exampleJTable.getModel();
System.out.println(exampleJTable.getValueAt(2, 2).toString());
インターフェイス TableModel は、データがJTableと対話する方法を定義します。これにより、Java でのテーブルの作成と使用が容易になります。テーブル・モデルがJTableに関連付けられると、JTableがデータにアクセスする方法を気にする必要はありません。あなたが心配しなければならないのは、テンプレートを作成してそれを使用することだけです.

TableModel インターフェイスを実装するクラスには、DefaultTableModel AbstractTableModel.
  • AbstractTableModel は、ほとんどの TableModel メソッドを実装します。
  • DefaultTableModel は AbstractTableModel のサブクラスで、データが配列に格納される 3 つのメソッドが実装されています.
    • public int getRowCount(): 戻り値 行数.
    • public int getColumnCount(): 列数を返す.
    • public Object getValueAt(int row, int column): (row, column) ボックス内のオブジェクトを返します。
AbstractTableModel または DefaultTableModel はデータに関連しています。DefaultTableModel は Vector 構造体を使用します。この実装は サポート対象 Javaによって、そしてプログラミングの観点からも。大きな部分は この実装がアプリケーションに問題を引き起こしているかどうかを知る必要があります.

AbstractTableModel を使用すると、データを自由に格納できますが、JTable との対話を可能にするメソッドを実装する必要があります。実装されるメソッドの数は、データの管理方法によって異なります。読み取るには、上記の3つのメソッドだけで十分ですが、変更(行または列の追加、削除)には、テーブルのテンプレートに格納されているデータを変更する他のメソッドを実装する必要があります.

テーブルモデルの作成

class Model extends AbstractTableModel{
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;
}
}
このコードは、テンプレートを table
//JTable
JTableテーブル= new JTable();
//テンプレートの作成
Model =new Model(data, title);
//テンプレートをJTable
table.setModel(model);