JCheckBox
наследуется от JToggleButton
, поэтому нажатие на текст будет иметь тот же эффект, что и установка флажка.Но теперь мне нужен JCheckBox
, который ведет себя так:
- Нажатие на флажок: установите или снимите флажок;
- Нажатие на тексте: не обновлять флажок, ноиспустить
ActionEvent
.
В настоящее время я использую некрасивый хак, переопределяя функцию processMouseEvent()
в JCheckBox
, и распространяю ее на super
, только если мышь щелкает по левой частииз CheckBox
.Код выглядит так:
public class MyCheckBox extends JCheckBox {
@Override
protected void processMouseEvent(MouseEvent e) {
if (e.getX() < this.getHeight()) {
super.processMouseEvent(e);
} else {
this.fireActionPerformed(new ActionEvent(this, 0, "click on text"))
}
}
}
Есть ли более простое решение?