Swing/TransparentTableHeader のバックアップ(No.6)
- バックアップ一覧
 - 差分 を表示
 - 現在との差分 を表示
 - 現在との差分 - Visual を表示
 - ソース を表示
 - Swing/TransparentTableHeader へ行く。
  
- 1 (2011-07-14 (木) 11:19:03)
 - 2 (2011-07-14 (木) 15:56:15)
 - 3 (2012-12-22 (土) 16:06:02)
 - 4 (2013-08-17 (土) 00:59:39)
 - 5 (2014-03-25 (火) 14:56:12)
 - 6 (2014-11-21 (金) 18:20:40)
 - 7 (2015-03-08 (日) 19:36:54)
 - 8 (2015-04-08 (水) 17:13:52)
 - 9 (2015-06-22 (月) 17:56:23)
 - 10 (2015-10-01 (木) 00:08:52)
 - 11 (2016-01-08 (金) 19:19:21)
 - 12 (2016-01-13 (水) 13:32:29)
 - 13 (2016-06-01 (水) 19:05:48)
 - 14 (2017-09-07 (木) 21:23:19)
 - 15 (2018-02-24 (土) 19:51:30)
 - 16 (2019-01-22 (火) 18:20:42)
 - 17 (2020-12-01 (火) 11:00:37)
 - 18 (2023-02-23 (木) 18:39:19)
 - 19 (2024-02-02 (金) 11:54:50)
 - 20 (2024-02-15 (木) 20:19:31)
 - 21 (2025-01-03 (金) 08:57:02)
 - 22 (2025-01-03 (金) 09:01:23)
 - 23 (2025-01-03 (金) 09:02:38)
 - 24 (2025-01-03 (金) 09:03:21)
 - 25 (2025-01-03 (金) 09:04:02)
 - 26 (2025-06-19 (木) 12:41:37)
 - 27 (2025-06-19 (木) 12:43:47)
 
 
- title: JTableのヘッダを透明化 tags: [JTable, JTableHeader, Transparent, JScrollPane, JViewport, TableCellRenderer, TableCellEditor] author: aterai pubdate: 2011-04-04T16:49:46+09:00 description: JTableのヘッダ背景、セル間の垂直罫線を非表示にします。
 
概要
JTableのヘッダ背景、セル間の垂直罫線を非表示にします。
Screenshot

Advertisement
サンプルコード
class TransparentHeader extends JLabel implements TableCellRenderer {
  private final Border b = BorderFactory.createCompoundBorder(
      BorderFactory.createMatteBorder(0,0,1,0,Color.BLACK),
      BorderFactory.createEmptyBorder(2,2,1,2));
  private final Color alphaZero = new Color(0, true);
  @Override public Component getTableCellRendererComponent(
        JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    this.setText(Objects.toString(value, ""));
    this.setHorizontalAlignment(JLabel.CENTER);
    this.setOpaque(false);
    this.setBackground(alphaZero);
    this.setForeground(Color.BLACK);
    this.setBorder(b);
    return this;
  }
}
View in GitHub: Java, Kotlin解説
JTableHeaderJTableHeaderとヘッダレンダラーの両方を、setOpaque(false), 背景色:Color(0, true)と設定
JTable,JScrollPane(Viewport,ColumnHeader)もsetOpaque(false), 背景色:Color(0, true)と設定- 背景パターンは、
JScrollPane#paintComponent(...)をオーバーライドして描画- JTableを半透明にするは、
JViewport#paintComponent(...)をオーバーライド 
 - JTableを半透明にするは、
 
- 背景パターンは、
 VerticalLine- セル間の垂直線を非表示: 
table.setShowVerticalLines(false); - セル間の幅を
0にして、選択時に罫線のあとが表示されないように設定:table.setIntercellSpacing(new Dimension(0,1)); 
- セル間の垂直線を非表示: 
 Boolean.classのDefaultRenderer- 透明化した
BooleanCellRendererやBooleanCellEditorを設定 
- 透明化した
 
参考リンク
- JTableを半透明にする
 - JTableHeaderを非表示にする
JTableのヘッダ自体を非表示にする場合のサンプル