TITLE:JTableの背景色を変更

JTableの背景色を変更

編集者:Terai Atsuhiro~

作成日:2004-08-02
更新日:2022-06-11 (土) 15:35:15
  • category: swing folder: TableBackground title: JTableの背景色を変更 tags: [JTable, JViewport, JScrollPane, JColorChooser] author: aterai pubdate: 2004-08-02T01:28:45+09:00 description: JTableを追加したJViewportがセルで隠れていない部分の色を変更します。 image: https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTUV7me60I/AAAAAAAAAl4/PQqRFaxI6XA/s800/TableBackground.png

概要

JTableを追加したJViewportがセルで隠れていない部分の色を変更します。

概要

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メソッドを使用してJTableJViewportの高さまで拡張すれば、直接JTableの背景色を設定するだけで同様の状態になる
  • セルの背景色を変更する場合はTableCellRendererを使用する
  • ヘッダの背景色(カラムをマウスでドラッグ中に表示される)を変更する場合は、空のJViewportJScrollPaneのカラムヘッダに追加してその背景色を変更する
    #spanend
    #spanadd
    scroll.setColumnHeader(new JViewport());
    #spanend
    #spanadd
    //or scroll.setColumnHeaderView(new JLabel());
    #spanend
    #spanadd
    scroll.getColumnHeader().setBackground(Color.RED);
    #spanend
    #spanadd
    
上記のサンプルでは、背景色を不透明にするを選択して背景色を設定してやると、JViewportの背景色が変更されます。

参考リンク

セルの背景色を変更する場合は、TableCellRendererを使用(TableCellRendererでセルの背景色を変更)します。 JDK 6 で追加された JTable#setFillsViewportHeightメソッドを使用すると、JTableの背景色を設定すれば、JViewportの背景色を設定する必要はありません(参考:JTable自体の高さを拡張)。

参考リンク

コメント

コメント