1

JCheckBoxから継承されるJToggleButtonため、テキストをクリックすると、チェックボックスをクリックした場合と同じ効果があります。しかし今、私はJCheckBoxこのように動作するが必要です:

  • チェックボックスをクリックする:チェックボックスをオンまたはオフにします。
  • テキストをクリックする:チェックボックスを更新せずに、を発行しますActionEvent

processMouseEvent()現在、の関数をオーバーライドし、マウスがの左側をクリックしている場合にJCheckBoxのみ関数を伝播することで、醜いハックを使用しています。コードは次のようになります。superCheckBox

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"))
        }
    }
}

もっと簡単な解決策はありますか?

4

1 に答える 1

3

テキストなしのJCheckBoxと、独自のリスナーを持つテキスト用の個別のJLabelを追加します。

于 2011-12-20T06:29:23.857 に答える