Javaプログラミング/Javaプログラミング関連情報

JTableでテーブルを作ろう!(2ページ目)

今回は、表計算ソフトなどでおなじみのテーブルを作る「JTable」についてです。

執筆者:掌田 津耶乃

テーブルモデルの利用


では、表示された各項目(テーブルの「セル」と呼ばれるものです)の値を取り出したり、変更したりするにはどうすればよいのでしょうか。JTableに、そのためのメソッドなどが用意されているんでしょうか。

実は、違います。JTableを調べても、セルの値を操作するメソッドなどないのです。では、どうすればいいのか。これは、JListやJTreeがどうやっていたかを思い出せば、想像がつくでしょう。そう、「モデル」クラスを利用するのです。

テーブルのデータは、「テーブルモデル」と呼ばれるクラスによって管理されます。これは、javax.swing.table.TableModelクラスとして用意されています。一般的には、これを継承した「DefaultTableModel」というクラスを利用します。

では、このクラスを使ってテーブルモデルを作成し、その値を設定する簡単なサンプルを作成してみましょう。

package jp.allabout;

import java.awt.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;

public class SampleApp extends JFrame {
  JTable table;
  JScrollPane scroll;
  DefaultTableModel model;

  public SampleApp(){
    this.setSize(new Dimension(300,200));
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    model = new DefaultTableModel(10,5);
    table = new JTable(model);
    scroll = new JScrollPane(table);
    this.add(scroll,BorderLayout.CENTER);
    for(int i = 0;i < 10;i++)
      for(int j = 0;j < 5;j++)
        model.setValueAt("R:" + i + " C:" + j, i, j);
  }
  
  public static void main(String[] args) {
    new SampleApp().setVisible(true);
  }
  
}

DefaultTableModelでテーブルに値を設定し表示する。

これは、DefaultTableModelを使って10行×5列のテーブルデータを作成し、それぞれのセルに値を設定して表示させたものです。ここでは、まず行数・列数を指定してDefaultTableModelインスタンスを作成していますね。

new DefaultTableModel( 行数 , 列数 );


これで、指定したデータ数のテーブルモデルが用意されます。後は、このインスタンスを引数に指定してnew JTableするだけです。これで、指定のテーブルモデルを使ったJTableインスタンスが作成されます。

実際のテーブルの値の操作は、作成したDefaultTableModelインスタンスのメソッドを呼び出して行います。ここでは、こんな感じですべてのセルの値を設定していますね。

for(int i = 0;i < 10;i++)
  for(int j = 0;j < 5;j++)
    model.setValueAt("R:" + i + " C:" + j, i, j);


DefaultTableModelの「setValueAt」というメソッドは、引数に設定するString、セルの縦位置、横位置(それぞれ上および左から何番目か)を引数に指定します。セルの値を取り出す場合も、「getValueAt( 行数 , 列数 )」といったメソッドを使って簡単に取得できます。

テーブルモデルでセルの値を操作すると、リアルタイムに表示されているセルの値も変更されます。非常に簡単にセルを扱えることが実感できるはずです。
  • 前のページへ
  • 1
  • 2
  • 3
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます