• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:JTableの背景色を変更
#navi(../)
#tags()
RIGHT:Posted by &author(aterai); at 2004-08-02
*JTableの背景色を変更 [#u3817f74]
JTableを追加したJViewportがセルで隠れていない部分の色を変更します。
---
title: JTableの背景色を変更
tags: [JTable, JViewport, JScrollPane]
author: aterai
pubdate: 2004-08-02T01:28:45+09:00
description: JTableを追加したJViewportがセルで隠れていない部分の色を変更します。
---
* 概要 [#u3817f74]
`JTable`を追加した`JViewport`がセルで隠れていない部分の色を変更します。

-&jnlp;
-&jar;
-&zip;
#download(https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTUV7me60I/AAAAAAAAAl4/PQqRFaxI6XA/s800/TableBackground.png)

//#screenshot
#ref(http://lh6.ggpht.com/_9Z4BYR88imo/TQTUV7me60I/AAAAAAAAAl4/PQqRFaxI6XA/s800/TableBackground.png)

**サンプルコード [#l5c8f8e1]
* サンプルコード [#l5c8f8e1]
#code(link){{
//JScrollPane scroll = new JScrollPane(table);
scroll.getViewport().add(table);
scroll.getViewport().setOpaque(true);
scroll.getViewport().setBackground(Color.WHITE);
//table.getParent().setBackground(Color.WHITE);
}}

**解説 [#q0eb6822]
このページのタイトルなどで「JTableの背景色」としている部分は、実際はJTableの背景色ではなく、JTableを追加したJViewportがセルで隠れていない部分のことです。
* 解説 [#q0eb6822]
このページのタイトルなどで「`JTable`の背景色」としている部分は、実際は`JTable`の背景色ではなく、`JTable`を追加した`JViewport`がセルで隠れていない部分のことです。

このため、上記のスクリーンショットのように色をつけたい場合は、JTable自身の背景色を設定するのではなく、JViewportの背景色を設定する必要があります。サンプルコードではJScrollPaneからJViewportを取得していますが、JTable#getParent()メソッドからもJViewportを取得することができます。
このため、上記のスクリーンショットのように色をつけたい場合は、`JTable`自身の背景色を設定するのではなく、`JViewport`の背景色を設定する必要があります。サンプルコードでは`JScrollPane`から`JViewport`を取得していますが、`JTable#getParent()`メソッドからも`JViewport`を取得することができます。

上記のサンプルでは、背景色を不透明にするを選択して背景色を設定してやると、JViewportの背景色が変更されます。
上記のサンプルでは、背景色を不透明にするを選択して背景色を設定してやると、`JViewport`の背景色が変更されます。

セルの背景色を変更する場合は、TableCellRendererを使用([[TableCellRendererでセルの背景色を変更>Swing/StripeTable]])します。
セルの背景色を変更する場合は、`TableCellRenderer`を使用([[TableCellRendererでセルの背景色を変更>Swing/StripeTable]])します。

----
JDK 6 で追加された JTable#setFillsViewportHeightメソッドを使用すると、JTableの背景色を設定すれば、JViewportの背景色を設定する必要はありません(参考:[[JTable自体の高さを拡張>Swing/FillsViewportHeight]])。
`JDK 1.6.0`で追加された`JTable#setFillsViewportHeight`メソッドを使用すると、`JTable`の背景色を設定すれば、`JViewport`の背景色を設定する必要はありません(参考:[[JTable自体の高さを拡張>Swing/FillsViewportHeight]])。

**参考リンク [#ab7ac14b]
-[[JTable自体の高さを拡張>Swing/FillsViewportHeight]]
-[[TableCellRendererでセルの背景色を変更>Swing/StripeTable]]
-[[JTableに行ヘッダを追加>Swing/TableRowHeader]]
* 参考リンク [#ab7ac14b]
- [[JTable自体の高さを拡張>Swing/FillsViewportHeight]]
- [[TableCellRendererでセルの背景色を変更>Swing/StripeTable]]
- [[JTableに行ヘッダを追加>Swing/TableRowHeader]]

**コメント [#d3f3a4d2]
* コメント [#d3f3a4d2]
#comment
#comment