Swing/RolloverBooleanRenderer の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/RolloverBooleanRenderer へ行く。
- Swing/RolloverBooleanRenderer の差分を削除
--- category: swing folder: RolloverBooleanRenderer title: JCheckBoxのセルをロールオーバーする tags: [JTable, JCheckBox, MouseListener, TableCellRenderer] author: aterai pubdate: 2010-06-21T15:14:48+09:00 description: JTableのセルにJCheckBoxを使用したときでも、マウスカーソルでロールオーバーするように設定します。 image: https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTSCUU481I/AAAAAAAAAiI/LzyeHFbwP40/s800/RolloverBooleanRenderer.png hreflang: href: https://java-swing-tips.blogspot.com/2010/07/create-jcheckbox-rollover-effect-in.html lang: en --- * 概要 [#summary] `JTable`のセルに`JCheckBox`を使用したときでも、マウスカーソルでロールオーバーするように設定します。 #download(https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTSCUU481I/AAAAAAAAAiI/LzyeHFbwP40/s800/RolloverBooleanRenderer.png) * サンプルコード [#sourcecode] #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(SwingConstants.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; } } }} * 解説 [#explanation] - 上: デフォルト - 下: `JTable#setDefaultRenderer`メソッドで、`Object`、`Number`、`Boolean`クラスそれぞれにマウスカーソルに反応するセルレンダラーを設定 - 上: -- デフォルト - 下: -- `JTable#setDefaultRenderer`メソッドで`Object`、`Number`、`Boolean`クラスそれぞれにマウスカーソルに反応するセルレンダラーを設定 -- これらのセルレンダラーはデフォルトの`JTable$BooleanRenderer`クラスなどを参考に作成 -- `JCheckBox`のロールオーバー表示は`JCheckBox#getModel()#setRollover(boolean)`メソッドを使用 * 参考リンク [#reference] - [[JTableが使用するBooleanCellEditorの背景色を変更>Swing/BooleanCellEditor]] * コメント [#comment] #comment #comment