<Java> Swing#JTableの扱い方
部活向けドキュメント
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);
表示例
テーブルに後からデータを追加する
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);
表示例
データを取得する/変更する/削除する
// データを取得する // 戻り値は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)