java - JCheckBox 防止在单击文本时更改选中状态

标签 java swing jcheckbox

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/

相关文章:

java - 使用 Spring Boot 的 Hibernate 上的表列映射错误

java - 将值从 applet 传递到 jsp

java - JCheckBox 用于缩放上传图片

java - 如何使用复选框查找计算机外围设备的总成本?

java - Hibernate/SQL 多重连接查询精确匹配关系

java - GWT 用左键和右键移动按钮

java - 在两个 JList 之间移动选定的数据

Java Swing : How can I implement a login screen before showing a JFrame?

java - 如何保留 ImageIcon 的文件名以供以后引用?

java - Jtable 列中的复选框问题