JTableとはどんなもの?


前回、JListというものを使って一覧リストを表示しましたが、これはあくまで1列のリスト表示のみを行うものでした。が、例えば表のようなものを表現するようなときには、こうした1列のリストではなく、縦横にずらりと項目を表示した、表計算ソフトのシートのようなものを使うこともよくあります。

こうしたシートに相当するコンポーネントが「JTable」というものです。これは文字通り「テーブル(縦横に項目が一覧表示される表状のもの)」を作成するコンポーネントです。では、実際にこれを使ってみましょう。

package jp.allabout.java;

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

public class SampleApp extends JFrame{
  private static final long serialVersionUID = 1L;
  private JTable table;
  
  public SampleApp(){
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    table = new JTable(10,5);
    this.add(table,BorderLayout.CENTER);
    this.setSize(new Dimension(300,200));
  }
  
  public static void main(String[] args) {
    new SampleApp().setVisible(true);
  }
}

JTableを組み込んだJFrame。ただ、あんまり見た目には使いやすそうに見えない。


 ここでは、「new JTable(10,5)」という形でJTableを作成していますね。これで、10行×5列のシートを持ったJTableが作成されます。JTableは、このように縦横の行数と列数を引数に指定して作成するのが一般的でしょう。

作成されたテーブルには、縦横にずらりと入力する項目が並んでいます。この1つ1つの項目を「セル」と呼びます。セルをクリックし、キーボードから入力をすると、そのセルに直接テキストを書き込むことができます。また既に書いてあるセルをダブルクリックすると再編集できるようになります。

ただし、実際にやってみるとわかることですが、こうして表示されたJTableのテーブルは、なんとも使いにくいものです。ウインドウサイズにあわせて幅が自動調整されるため、縦横の行数や列数が増えてくると、ウインドウ内には表示しきれなくなってくるでしょう。通常はこういうとき、スクロールバーなどが表示されてスクロール表示できるはずですが、このJTableではそうしたことはやってくれないようです。どうすればいいのでしょう?