How to make checkbox or combobox readonly in JavaF

2019-06-25 08:23发布

How to make checkbox/combobox readonly in javaFX but not disabled.

I tried consuming onAction event but it didn't work.

checkBox.setOnAction(new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent event) {
        event.consume();
    }
});

Consuming all events like in code below works but I don't think it's a good solution:

checkBox.addEventFilter(KeyEvent.ANY, new EventHandler<KeyEvent>() {
    @Override
    public void handle(KeyEvent event) {
        event.consume();
    }
});
checkBox.addEventFilter(MouseEvent.ANY, new EventHandler<MouseEvent>() {
    @Override
    public void handle(MouseEventevent) {
        event.consume();
    }
});

3条回答
你好瞎i
2楼-- · 2019-06-25 08:41

You can override method CheckBox#arm() with an empty one:

    CheckBox cb = new CheckBox("hi") {
        @Override
        public void arm() {
            // intentionally do nothing
        }
    };
查看更多
beautiful°
3楼-- · 2019-06-25 08:53

You can set the check box to disabled but set the the look of it using CSS. If you are using the default style you can make the check box look 'normal' by setting full opacity.

checkbox.setStyle("-fx-opacity: 1");

It is probably a similar deal with the combo box.

查看更多
太酷不给撩
4楼-- · 2019-06-25 08:53

If you do not want to overwrite the CheckBok class, you can use the selectedProperty.

CheckBox cb = new CheckBox("hi");
cb.selectedProperty().addListener(new NCL());



class NCL implements ChangeListener<Boolean> {

        @Override
        public void changed(ObservableValue<? extends Boolean> ov, Boolean old_val, Boolean new_val) {
            cb.setSelected(false);
        }
    }
查看更多
登录 后发表回答