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"))
}
}
}
もっと簡単な解決策はありますか?