Swing/RolloverBooleanRenderer のバックアップ差分(No.1)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/RolloverBooleanRenderer へ行く。
- 追加された行はこの色です。
- 削除された行はこの色です。
TITLE:JCheckBoxのセルをロールオーバーする #navi(../) #tags() RIGHT:Posted by &author(aterai); at 2010-06-21 *JCheckBoxのセルをロールオーバーする [#sfa6e22d] JTableのセルにJCheckBoxを使用したときでも、マウスカーソルでロールオーバーするように設定します。 -&jnlp; -&jar; -&zip; //#screenshot #ref(http://lh6.ggpht.com/_9Z4BYR88imo/TQTSCUU481I/AAAAAAAAAiI/LzyeHFbwP40/s800/RolloverBooleanRenderer.png) **サンプルコード [#h80337c0] #code(link){{ class RolloverBooleanRenderer extends JCheckBox implements TableCellRenderer, UIResource { private static final Border noFocusBorder = new EmptyBorder(1, 1, 1, 1); private final HighlightListener highlighter; public RolloverBooleanRenderer(HighlightListener highlighter) { super(); this.highlighter = highlighter; setHorizontalAlignment(JLabel.CENTER); setBorderPainted(true); setRolloverEnabled(true); setOpaque(true); } @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if(highlighter.isHighlightableCell(row, column)) { getModel().setRollover(true); }else{ getModel().setRollover(false); } if(isSelected) { setForeground(table.getSelectionForeground()); super.setBackground(table.getSelectionBackground()); }else{ setForeground(table.getForeground()); setBackground(table.getBackground()); } setSelected((value != null && ((Boolean)value).booleanValue())); if(hasFocus) { setBorder(UIManager.getBorder("Table.focusCellHighlightBorder")); }else{ setBorder(noFocusBorder); } return this; } } }} **解説 [#r4c302c8] -上: デフォルト -下: JTable#setDefaultRendererメソッドで、Object, Number, Booleanクラスそれぞれに、マウスカーソルに反応するレンダラーを設定 -- これらは、JTable$BooleanRendererクラスなどを参考に作成 -- JCheckBoxのロールオーバーは、JCheckBox#getModel()#setRollover(boolean)メソッドを使用 //**参考リンク **コメント [#ie467e8b] #comment