JavaでJTableの各列に背景色・前景色を設定する方法
JTableは、複雑なデータ構造を表示するために使用されるJComponentクラスのサブクラスです。JTableコンポーネントはMVC(Model View Controller)デザインパターンに従って、データを行と列の形式で表示します。また、JTableはTableModelListener、TableColumnModelListener、ListSelectionListener、CellEditorListener、RowSorterListenerなどのリスナーインターフェースを生成できます。
JTableの各列の背景色と前景色を変更するには、DefaultTableCellRendererクラスをカスタマイズします。このクラスには、実装が必要なメソッドとしてgetTableCellRendererComponent()が1つだけ用意されています。セルレンダラーをカスタマイズすることで、特定の列に対して独自の配色を柔軟に適用できます。
実装例
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
public class JTableColumnColorTest extends JFrame {
private JTable table;
private TableColumn tColumn;
public JTableColumnColorTest() {
setTitle("JTableColumnColor Test");
table = new JTable(10, 5);
// 3列目(インデックス2)のレンダラーを設定
tColumn = table.getColumnModel().getColumn(2);
tColumn.setCellRenderer(new ColumnColorRenderer(Color.lightGray, Color.red));
add(new JScrollPane(table), BorderLayout.CENTER);
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new JTableColumnColorTest();
}
}
// JTableの各列の背景色と前景色を設定するためのカスタムレンダラークラス
class ColumnColorRenderer extends DefaultTableCellRenderer {
Color backgroundColor, foregroundColor;
public ColumnColorRenderer(Color backgroundColor, Color foregroundColor) {
super();
this.backgroundColor = backgroundColor;
this.foregroundColor = foregroundColor;
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
Component cell = super.getTableCellRendererComponent(
table, value, isSelected, hasFocus, row, column);
cell.setBackground(backgroundColor);
cell.setForeground(foregroundColor);
return cell;
}
}
コードの解説
上記のコードでは、以下の手順で特定の列の色を変更しています。
- DefaultTableCellRendererを継承したカスタムクラスを作成 — コンストラクタで背景色と前景色を受け取り、フィールドに保持します。
- getTableCellRendererComponent()メソッドをオーバーライド — スーパークラスのメソッドを呼び出してセルコンポーネントを取得し、そのコンポーネントに対して
setBackground()とsetForeground()を呼び出して色を適用します。 - 対象の列にレンダラーを設定 —
table.getColumnModel().getColumn(2)で3列目を取得し、setCellRenderer()でカスタムレンダラーを登録します。
この例では、3列目のセルが薄い灰色(Color.lightGray)の背景と赤(Color.red)の文字色で表示されます。他の列にも異なる色を適用したい場合は、同様に各列に対して個別のレンダラーを設定するだけで対応できます。
出力結果

-
【Java】JPanelの背景色を設定する方法|setBackground()の使い方を解説
JPanelはJava Swingにおけるコンテナの一種で、それ自体は不可視(インビジブル)のコンポーネントです。JPanelのデフォルトのレイアウトマネージャーはFlowLayoutであり、ボタン、テキストフィールド、ラベル、テーブル、リスト、ツリーなど、さまざまなコンポーネントを自由に追加できます。 JPanelに背景色を設定するには、setBackground()メソッドを使用します。このメソッドはComponentクラスで定義されており、引数にjava.awt.Colorクラスのオブジェクトを渡すことで、任意の色を背景として指定できます。 色の指定方法 Colorクラスには「Color
-
matplotlibのテーブルで列の背景色を設定する方法
matplotlibのテーブルで列の背景色を設定するには? matplotlibのテーブルでは、ax.table() の cellColours 引数を使って各セルの背景色を個別に指定できます。各列に属するすべてのセルに同じ色を割り当てることで、実質的に「列ごとの背景色」を実現できます。 実装の手順 図のサイズを設定し、サブプロット間および周囲のパディングを調整します。 列ラベル用のタプルを作成します。 レコード(リストのリスト)としてセルのテキストデータを作成します。 各セルの背景色を格納したリストのリストを作成します。 plt.subplots() で図とサブプロットを作成します。 a