1

JCheckBox它继承自JToggleButton,因此单击文本将具有单击复选框的相同效果。但现在我需要一个JCheckBox这样的行为:

  • 单击复选框:选中或取消选中复选框;
  • 单击文本:不要更新复选框,而是发出ActionEvent.

目前我正在使用一个丑陋的 hack,方法是覆盖中的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"))
        }
    }
}

有没有更直接的解决方案?

4

1 回答 1

3

为带有自己的侦听器的文本添加一个没有文本的 JCheckBox 和一个单独的 JLabel。

于 2011-12-20T06:29:23.857 回答