---
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 [#summary]
`JTable`のセルに`JCheckBox`を使用したときでも、マウスカーソルでロールオーバーするように設定します。
#download(https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTSCUU481I/AAAAAAAAAiI/LzyeHFbwP40/s800/RolloverBooleanRenderer.png)
* Source Code Examples [#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;
}
}
}}
* Description [#explanation]
* Description [#description]
- 上:
-- デフォルト
- 下:
-- `JTable#setDefaultRenderer`メソッドで`Object`、`Number`、`Boolean`クラスそれぞれにマウスカーソルに反応するセルレンダラーを設定
-- これらのセルレンダラーはデフォルトの`JTable$BooleanRenderer`クラスなどを参考に作成
-- `JCheckBox`のロールオーバー表示は`JCheckBox#getModel()#setRollover(boolean)`メソッドを使用
* Reference [#reference]
- [[JTableが使用するBooleanCellEditorの背景色を変更>Swing/BooleanCellEditor]]
* Comment [#comment]
#comment
#comment