JTableの背景色を変更
Total: 33901, Today: 2, Yesterday: 0
Posted by aterai at
Last-modified:
Summary
JTableを追加したJViewportがセルで隠れていない部分の色を変更します。
Screenshot

Advertisement
Source Code Examples
// 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, KotlinDescription
上記のサンプルでは、背景色を不透明にするを選択して背景色を設定するとJViewportの背景色が変更されます。
- このページのタイトルなどで「
JTableの背景色」としている部分は実際はJTableの背景色ではなく、JTableを追加したJViewportがセルで隠れていない領域を表している- このため上記のスクリーンショットのように色をつけたい場合は、
JTable自身の背景色を設定するのではなくJViewportの背景色を設定する必要がある - サンプルコードでは
JScrollPaneからJViewportを取得しているが、JTable#getParent()メソッドからもJViewportを取得可能
- このため上記のスクリーンショットのように色をつけたい場合は、
-
JDK 1.6.0で追加されたJTable#setFillsViewportHeightメソッドを使用してJTableをJViewportの高さまで拡張すれば、直接JTableの背景色を設定するだけで同様の状態になる - セルの背景色を変更する場合は
TableCellRendererを使用する - ヘッダの背景色(カラムをマウスでドラッグ中に表示される)を変更する場合は、空の
JViewportをJScrollPaneのカラムヘッダに追加してその背景色を変更するscroll.setColumnHeader(new JViewport()); //or scroll.setColumnHeaderView(new JLabel()); scroll.getColumnHeader().setBackground(Color.RED);