4

チェックボックス/コンボボックスをjavaFXで読み取り専用にするが、無効にしない方法。

イベントを消費してみonActionましたが、うまくいきませんでした。

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

以下のコードのようにすべてのイベントを消費することは機能しますが、それは良い解決策ではないと思います:

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();
    }
});
4

3 に答える 3

16

チェックボックスを無効に設定できますが、CSSを使用して外観を設定します。デフォルトのスタイルを使用している場合は、完全な不透明度を設定することで、チェックボックスを「通常」に見せることができます。

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

それはおそらくコンボボックスと同様の取引です。

于 2013-04-01T19:13:53.763 に答える
2

CheckBox#arm()空のメソッドでメソッドをオーバーライドできます。

    CheckBox cb = new CheckBox("hi") {
        @Override
        public void arm() {
            // intentionally do nothing
        }
    };
于 2013-03-28T12:48:47.080 に答える
0

CheckBokクラスを上書きしたくない場合は、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);
        }
    }
于 2013-03-28T19:06:39.667 に答える