JCheckBox
它继承自JToggleButton
,因此点击文本与点击复选框效果相同。但现在我需要一个行为如下的 JCheckBox
:
- 点击复选框:选中或取消选中复选框;
- 点击文本:不更新复选框,但发出一个
ActionEvent
。
目前,我正在使用一个丑陋的 hack,方法是覆盖 JCheckBox
中的 processMouseEvent()
函数,并且仅在鼠标出现时将其传播到 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"))
}
}
}
有没有更直接的解决方案?
最佳答案
添加一个没有文本的 JCheckBox 和一个单独的 JLabel 用于带有自己的监听器的文本。
关于java - JCheckBox 防止在单击文本时更改选中状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8571517/