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"))
}
}
}
有更直接的解决方案吗?
答案 0 :(得分:3)
添加一个没有文本的JCheckBox和一个单独的JLabel,用于带有自己的监听器的文本。