JavaでJTableの交互の行に背景色を設定する方法
JTableはJComponentクラスのサブクラスであり、複数の行(row)と列(column)に情報を表示するテーブルを作成するために使用されます。JTableで値が選択されるとTableModelEventが生成され、TableModelListenerインターフェースを実装することでこのイベントを処理できます。
JTableの交互の行(偶数行・奇数行)に異なる背景色を設定するには、JTableクラスのprepareRenderer()メソッドをオーバーライドします。この手法は「ストライプ表示」とも呼ばれ、大量のデータを扱うテーブルの視認性を大きく向上させることができます。
構文
public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
パラメータの説明
- renderer:セルを描画するためのTableCellRenderer
- row:描画対象セルの行インデックス
- column:描画対象セルの列インデックス
コード例
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
public class AlternateRowColorTableTest extends JFrame {
public AlternateRowColorTableTest() {
setTitle("AlternateRowColorTable Test");
JTable table = new JTable(
new Object[][] {
{"115", "Ramesh"},
{"120", "Adithya"},
{"125", "Jai"},
{"130", "Chaitanya"},
{"135", "Raja"}
},
new String[] {"Employee Id", "Employee Name"}
) {
@Override
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
Component comp = super.prepareRenderer(renderer, row, column);
Color alternateColor = new Color(200, 201, 210); // 交互の行に適用する色
Color whiteColor = Color.WHITE; // 通常の行の色
// 選択中の行でない場合のみ背景色を変更
if (!comp.getBackground().equals(getSelectionBackground())) {
Color c = (row % 2 == 0 ? alternateColor : whiteColor);
comp.setBackground(c);
}
return comp;
}
};
add(new JScrollPane(table));
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new AlternateRowColorTableTest();
}
}
実行結果
上記のコードを実行すると、以下のように偶数行と奇数行が交互に異なる背景色で表示されるテーブルが作成されます。

ポイント解説
- prepareRenderer()のオーバーライド:各セルが描画される直前に呼び出されるメソッドのため、ここで行番号(row)を判定して背景色を切り替えます。
- 選択行の保護:
getSelectionBackground()との比較により、ユーザーが選択した行のハイライト色を上書きしないようにしています。 - row % 2 == 0 の判定:行番号を2で割った余りで偶数行・奇数行を判別し、それぞれに異なるColorオブジェクトを適用します。
-
JavaのJButtonにショートカットキーを設定する方法をわかりやすく解説
JButtonはAbstractButtonのサブクラスで、Java Swingアプリケーションにプラットフォームに依存しないボタンを追加するために使用されます。JButtonは、ボタンが押されたりクリックされたりしたときにActionListenerインターフェースを発生させることができ、さらにMouseListenerやKeyListenerインターフェースも発生させることが可能です。また、setMnemonic()メソッドを使用することで、JButtonにショートカットキー(ニーモニック)を簡単に設定できます。ニーモニックを設定すると、ユーザーはマウスを使わずにキーボードの組み合わせ(例
-
【Java】JPanelの背景色を設定する方法|setBackground()の使い方を解説
JPanelはJava Swingにおけるコンテナの一種で、それ自体は不可視(インビジブル)のコンポーネントです。JPanelのデフォルトのレイアウトマネージャーはFlowLayoutであり、ボタン、テキストフィールド、ラベル、テーブル、リスト、ツリーなど、さまざまなコンポーネントを自由に追加できます。 JPanelに背景色を設定するには、setBackground()メソッドを使用します。このメソッドはComponentクラスで定義されており、引数にjava.awt.Colorクラスのオブジェクトを渡すことで、任意の色を背景として指定できます。 色の指定方法 Colorクラスには「Color