Swing/TableBackground の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/TableBackground へ行く。
- Swing/TableBackground の差分を削除
--- 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 --- * 概要 [#summary] `JTable`を追加した`JViewport`がセルで隠れていない部分の色を変更します。 #download(https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTUV7me60I/AAAAAAAAAl4/PQqRFaxI6XA/s800/TableBackground.png) * サンプルコード [#sourcecode] #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); }} * 解説 [#explanation] このページのタイトルなどで「`JTable`の背景色」としている部分は、実際は`JTable`の背景色ではなく、`JTable`を追加した`JViewport`がセルで隠れていない領域を表しています。 このため、上記のスクリーンショットのように色をつけたい場合は、`JTable`自身の背景色を設定するのではなく`JViewport`の背景色を設定する必要があります。サンプルコードでは`JScrollPane`から`JViewport`を取得していますが`JTable#getParent()`メソッドからも`JViewport`を取得できます。 上記のサンプルでは、背景色を不透明にするを選択して背景色を設定すると`JViewport`の背景色が変更されます。 - このページのタイトルなどで「`JTable`の背景色」としている部分は実際は`JTable`の背景色ではなく、`JTable`を追加した`JViewport`がセルで隠れていない領域を表している -- このため上記のスクリーンショットのように色をつけたい場合は、`JTable`自身の背景色を設定するのではなく`JViewport`の背景色を設定する必要がある -- サンプルコードでは`JScrollPane`から`JViewport`を取得しているが、`JTable#getParent()`メソッドからも`JViewport`を取得可能 - `JDK 1.6.0`で追加された`JTable#setFillsViewportHeight`メソッドを使用して`JTable`を`JViewport`の高さまで拡張すれば、直接`JTable`の背景色を設定するだけで同様の状態になる -- [[JTable自体の高さを拡張>Swing/FillsViewportHeight]] - セルの背景色を変更する場合は`TableCellRenderer`を使用する -- [[TableCellRendererでセルの背景色を変更>Swing/StripeTable]] - ヘッダの背景色(カラムをマウスでドラッグ中に表示される)を変更する場合は、空の`JViewport`を`JScrollPane`のカラムヘッダに追加してその背景色を変更する #code{{ scroll.setColumnHeader(new JViewport()); //or scroll.setColumnHeaderView(new JLabel()); scroll.getColumnHeader().setBackground(Color.RED); }} * 参考リンク [#reference] - [[JTable自体の高さを拡張>Swing/FillsViewportHeight]] - [[TableCellRendererでセルの背景色を変更>Swing/StripeTable]] - [[JTableに行ヘッダを追加>Swing/TableRowHeader]] * コメント [#comment] #comment #comment