Swing/TransparentTableHeader のバックアップ差分(No.2)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - 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)
- 追加された行はこの色です。
- 削除された行はこの色です。
TITLE:JTableのヘッダを透明化
#navi(../)
RIGHT:Posted by [[aterai]] at 2011-04-04
*JTableのヘッダを透明化 [#wa1142d7]
JTableのヘッダ背景、セル間の垂直罫線を非表示にします。
-&jnlp;
-&jar;
-&zip;
//#screenshot
#ref(https://lh6.googleusercontent.com/_9Z4BYR88imo/TZl3Ci_GNnI/AAAAAAAAA40/wSbo6ySTlz0/s800/TransparentTableHeader.png)
**サンプルコード [#g91fa02e]
#code{{
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(value!=null?value.toString():"");
this.setHorizontalAlignment(JLabel.CENTER);
this.setOpaque(false);
this.setBackground(alphaZero);
this.setForeground(Color.BLACK);
this.setBorder(b);
return this;
}
}
}}
**解説 [#j215b195]
- JTableHeader
-- JTableHeaderとヘッダレンダラーの両方を、setOpaque(false), 背景色: Color(0, true) と設定
- JTable, JScrollPane(Viewport, ColumnHeader)も setOpaque(false), 背景色: Color(0, true)と設定
-- 背景パターンは、JScrollPane#paintComponent(...)をオーバーライドして描画
--- [[JTableを半透明にする>Swing/TransparentTable]]は、JViewport#paintComponent(...)をオーバーライド
- VerticalLine
-- セル間の垂直線を非表示: table.setShowVerticalLines(false);
-- セル間の幅を0にして、選択時に罫線のあとが表示されないように設定: table.setIntercellSpacing(new Dimension(0,1));
- Boolean.classのDefaultRenderer
-- 透明化したBooleanCellRendererやBooleanCellEditorを設定
**参考リンク [#ef89274d]
- [[JTableを半透明にする>Swing/TransparentTable]]
- [[JTableHeaderを非表示にする>Swing/RemoveTableHeader]]
**コメント [#x433ea8f]
#comment