Swing/TableBackground のバックアップソース(No.22)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- バックアップ を表示
- Swing/TableBackground へ行く。
- 1 (2004-08-02 (月) 01:28:45)
- 2 (2004-08-02 (月) 01:34:49)
- 3 (2004-08-04 (水) 02:21:55)
- 4 (2004-10-08 (金) 06:26:43)
- 5 (2004-11-04 (木) 10:12:28)
- 6 (2004-11-19 (金) 09:59:16)
- 7 (2005-01-02 (日) 17:52:49)
- 8 (2005-02-03 (木) 02:04:25)
- 9 (2005-03-25 (金) 02:18:24)
- 10 (2005-04-28 (木) 04:33:09)
- 11 (2005-10-01 (土) 22:26:01)
- 12 (2006-02-27 (月) 16:52:39)
- 13 (2006-11-01 (水) 20:45:30)
- 14 (2007-04-04 (水) 13:08:39)
- 15 (2007-08-21 (火) 13:12:25)
- 16 (2007-08-31 (金) 13:09:40)
- 17 (2008-02-13 (水) 18:36:01)
- 18 (2013-04-11 (木) 21:52:26)
- 19 (2015-10-01 (木) 19:41:47)
- 20 (2016-06-02 (木) 12:27:48)
- 21 (2016-06-20 (月) 14:29:52)
- 22 (2016-06-20 (月) 16:15:38)
- 23 (2016-11-30 (水) 18:14:29)
- 24 (2017-11-26 (日) 23:50:35)
- 25 (2018-10-02 (火) 13:53:03)
- 26 (2020-10-02 (金) 10:12:26)
- 27 (2022-06-11 (土) 15:35:15)
--- title: JTableの背景色を変更 tags: [JTable, JViewport, JScrollPane, JColorChooser] author: aterai pubdate: 2004-08-02T01:28:45+09:00 description: JTableを追加したJViewportがセルで隠れていない部分の色を変更します。 --- * 概要 [#u3817f74] `JTable`を追加した`JViewport`がセルで隠れていない部分の色を変更します。 #download(https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTUV7me60I/AAAAAAAAAl4/PQqRFaxI6XA/s800/TableBackground.png) * サンプルコード [#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`がセルで隠れていない部分のことです。 このため、上記のスクリーンショットのように色をつけたい場合は、`JTable`自身の背景色を設定するのではなく、`JViewport`の背景色を設定する必要があります。サンプルコードでは`JScrollPane`から`JViewport`を取得していますが、`JTable#getParent()`メソッドからも`JViewport`を取得することができます。 上記のサンプルでは、背景色を不透明にするを選択して背景色を設定してやると、`JViewport`の背景色が変更されます。 ---- セルの背景色を変更する場合は、`TableCellRenderer`を使用([[TableCellRendererでセルの背景色を変更>Swing/StripeTable]])します。 ---- ヘッダの背景色(カラムをマウスでドラッグ中に表示される)を変更する場合は、空の`JViewport`を`JScrollPane`のカラムヘッダに追加して、その背景色を変更します。 #code{{ scroll.setColumnHeader(new JViewport()); //or scroll.setColumnHeaderView(new JLabel()); scroll.getColumnHeader().setBackground(Color.RED); }} ---- `JDK 1.6.0`で追加された`JTable#setFillsViewportHeight`メソッドを使用すると、`JTable`の背景色を設定すれば、`JViewport`の背景色を設定する必要はありません(参考: [[JTable自体の高さを拡張>Swing/FillsViewportHeight]])。 * 参考リンク [#ab7ac14b] - [[JTable自体の高さを拡張>Swing/FillsViewportHeight]] - [[TableCellRendererでセルの背景色を変更>Swing/StripeTable]] - [[JTableに行ヘッダを追加>Swing/TableRowHeader]] * コメント [#d3f3a4d2] #comment #comment