JTableの背景色を変更
Total: 29204
, Today: 2
, Yesterday: 2
Posted by aterai at
Last-modified:
概要
JTable
を追加したJViewport
がセルで隠れていない部分の色を変更します。
サンプルコード
// JScrollPane scroll = new JScrollPane(table);
scroll.getViewport().add(table);
scroll.getViewport().setOpaque(true);
scroll.getViewport().setBackground(Color.WHITE);
// table.getParent().setBackground(Color.WHITE);
view all解説
このページのタイトルなどで「JTable
の背景色」としている部分は、実際はJTable
の背景色ではなく、JTable
を追加したJViewport
がセルで隠れていない領域を表しています。
このため、上記のスクリーンショットのように色をつけたい場合は、JTable
自身の背景色を設定するのではなくJViewport
の背景色を設定する必要があります。サンプルコードではJScrollPane
からJViewport
を取得していますがJTable#getParent()
メソッドからもJViewport
を取得できます。
上記のサンプルでは、背景色を不透明にするを選択して背景色を設定するとJViewport
の背景色が変更されます。
-
JDK 1.6.0
で追加されたJTable#setFillsViewportHeight
メソッドを使用してJTable
をJViewport
の高さまで拡張すれば、直接JTable
の背景色を設定するだけで同様の状態になる - セルの背景色を変更する場合は
TableCellRenderer
を使用する - ヘッダの背景色(カラムをマウスでドラッグ中に表示される)を変更する場合は、空の
JViewport
をJScrollPane
のカラムヘッダに追加してその背景色を変更する
scroll.setColumnHeader(new JViewport());
//or scroll.setColumnHeaderView(new JLabel());
scroll.getColumnHeader().setBackground(Color.RED);