Swing/TableBackground のバックアップの現在との差分(No.15)
TITLE:JTableの背景色を変更
JTableの背景色を変更
編集者:Terai Atsuhiro~
作成日:2004-08-02
更新日:2022-06-11 (土) 15:35:15
概要
JTable
を追加したJViewport
がセルで隠れていない部分の色を変更します。
Screenshot
Advertisement
概要
JTableを追加したJViewportがセルで隠れていない部分の色を変更します。#screenshot
サンプルコード
#spanend
#spandel
//JScrollPane scroll = new JScrollPane(table);
#spanend
#spanadd
* サンプルコード [#sourcecode]
#spanend
#spanadd
#code(link){{
#spanend
#spanadd
// JScrollPane scroll = new JScrollPane(table);
#spanend
scroll.getViewport().add(table);
scroll.getViewport().setOpaque(true);
scroll.getViewport().setBackground(Color.WHITE);
#spandel
//table.getParent().setBackground(Color.WHITE);
#spanend
#spanadd
// table.getParent().setBackground(Color.WHITE);
#spanend
- &jnlp;
- &jar;
- &zip;
解説
このページのタイトルなどで「JTableの背景色」としている部分は、実際はJTableの背景色ではなく、JTableを追加したJViewportがセルで隠れていない部分のことです。解説
上記のサンプルでは、背景色を不透明にするを選択して背景色を設定するとJViewport
の背景色が変更されます。
このため、上記のスクリーンショットのように色をつけたい場合は、JTable自身の背景色を設定するのではなく、JViewportの背景色を設定する必要があります。サンプルコードではJScrollPaneからJViewportを取得していますが、JTable#getParent()メソッドからもJViewportを取得することができます。
- このページのタイトルなどで「
JTable
の背景色」としている部分は実際はJTable
の背景色ではなく、JTable
を追加したJViewport
がセルで隠れていない領域を表している- このため上記のスクリーンショットのように色をつけたい場合は、
JTable
自身の背景色を設定するのではなくJViewport
の背景色を設定する必要がある - サンプルコードでは
JScrollPane
からJViewport
を取得しているが、JTable#getParent()
メソッドからもJViewport
を取得可能
- このため上記のスクリーンショットのように色をつけたい場合は、
-
JDK 1.6.0
で追加されたJTable#setFillsViewportHeight
メソッドを使用してJTable
をJViewport
の高さまで拡張すれば、直接JTable
の背景色を設定するだけで同様の状態になる - セルの背景色を変更する場合は
TableCellRenderer
を使用する - ヘッダの背景色(カラムをマウスでドラッグ中に表示される)を変更する場合は、空の
JViewport
をJScrollPane
のカラムヘッダに追加してその背景色を変更する#spanend #spanadd scroll.setColumnHeader(new JViewport()); #spanend #spanadd //or scroll.setColumnHeaderView(new JLabel()); #spanend #spanadd scroll.getColumnHeader().setBackground(Color.RED); #spanend #spanadd