ぶらっ記ぃ(旧)

やりなおし→ http://nomadblacky.hatenablog.com/

<Java> Swing#JTableの扱い方

部活向けドキュメント

  1. JTableのコンストラクタ
  2. テーブルに後からデータを追加する
  3. データを取得する/変更する/削除する
  4. セルを直接編集不可能にする
  5. そのほか




JTableのコンストラクタ

JTable()
  行列ゼロの空テーブルを作成
JTable(int numRows, int numColumns)
  縦(Rows)×横(Columns)に空のセルを持つテーブルを作成
JTable(Object[][] rowData, Object[] columnNames)
  列名(columnNames)と、セルにデータ(rowData)を持ったテーブルを作成
JTable(TableModel model)
  データモデル(後述)を持ったテーブルを作成

※ Row = 行, Column = 列


*Example01*

// デザイン周りの記述は省略しています。
  
String[] columnNames = { "ID", "なまえ", "せんとうりょく"};

String[][] tabledata = { 
    {"01", "Hoge君", "1"},
    {"02", "foo子ちゃん", "50000"},
    {"03", "bar太郎", "300"}
};

JTable table = new JTable(tabledata, columnNames);

表示例
jtable01


テーブルに後からデータを追加する

JTableクラス単体ではデータの変更や削除をするのが面倒です。
そこで、DefaultTableModelというクラスを使用します。
このクラスはテーブルのデータ部分を管理します。


*Example02(データの追加)*

String[] columnNames = { "ID", "なまえ", "せんとうりょく"};

String[][] tabledata = { 
        {"01", "Hoge君", "1"},
        {"02", "foo子ちゃん", "50000"},
        {"03", "bar太郎", "300"}
};

DefaultTableModel model = 
        new DefaultTableModel(tabledata, columnNames);
// テーブルとモデルを対応付ける
JTable table = new JTable(model);


// modelを弄ることによりテーブルの内容を変更する。

// 列を追加
model.addColumn("趣味");
// 行を追加
String[] huga = {"04","huga","-100","素振り"};
model.addRow(huga);

表示例
jtable02


データを取得する/変更する/削除する


// データを取得する
// 戻り値はObject型であるため、Stringなどにキャストすること。
.getValueAt(int row, int col);
// データを変更する
.setValueAt(Object value, int row, int col);
// 一行削除する
.removeRow(int row)


セルを直接編集不可能にする

// DefaultTableModel.isCellEditableをオーバーライドして、
// 常にfalseを返すようにする。
DefaultTableModel model = new DefaultTableModel() {
    @Override
    public boolean isCellEditable(int row, int column) {
        return false;
    }
};


そのほか

自分もまだ試してないこととか

  • コンストラクタのObject型にもある通り、テーブルのデータは文字列や数字に限らない。
    画像を表示したりなんかもできる(みたい)。
  • 行の挿入
    insertRow(int row, Object[] rowData)
  • 行の移動
    moveRow(int start, int end, int to)