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がセルで隠れていない部分の色を変更します。
概要
JTable
を追加したJViewport
がセルで隠れていない部分の色を変更します。
Screenshot
Advertisement
サンプルコード
//JScrollPane scroll = new JScrollPane(table);
scroll.getViewport().add(table);
scroll.getViewport().setOpaque(true);
scroll.getViewport().setBackground(Color.WHITE);
//table.getParent().setBackground(Color.WHITE);
View in GitHub: Java, Kotlin解説
このページのタイトルなどで「JTable
の背景色」としている部分は、実際はJTable
の背景色ではなく、JTable
を追加したJViewport
がセルで隠れていない部分のことです。
このため、上記のスクリーンショットのように色をつけたい場合は、JTable
自身の背景色を設定するのではなく、JViewport
の背景色を設定する必要があります。サンプルコードではJScrollPane
からJViewport
を取得していますが、JTable#getParent()
メソッドからもJViewport
を取得することができます。
上記のサンプルでは、背景色を不透明にするを選択して背景色を設定してやると、JViewport
の背景色が変更されます。
セルの背景色を変更する場合は、TableCellRenderer
を使用(TableCellRendererでセルの背景色を変更)します。
ヘッダの背景色(カラムをマウスでドラッグ中に表示される)を変更する場合は、空のJViewport
をJScrollPane
のカラムヘッダに追加して、その背景色を変更します。
scroll.setColumnHeader(new JViewport());
//or scroll.setColumnHeaderView(new JLabel());
scroll.getColumnHeader().setBackground(Color.RED);
JDK 1.6.0
で追加されたJTable#setFillsViewportHeight
メソッドを使用すると、JTable
の背景色を設定すれば、JViewport
の背景色を設定する必要はありません(参考: JTable自体の高さを拡張)。