【问题标题】:JavaFX ChoiceBox doesn't show initial valueJavaFX ChoiceBox 不显示初始值
【发布时间】:2021-05-26 18:32:37
【问题描述】:

我有一个工厂方法,它为我提供了一个与枚举属性双向绑定的 ChoiceBox。选择框按预期工作,只是它不显示属性构造函数中设置的初始值。相反,选择框最初显示为空白,不显示任何值。怎么了?

这是一个 MRE:

import javafx.application.Application;
import javafx.beans.binding.Bindings;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.scene.Scene;
import javafx.scene.control.ChoiceBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class ChoiceBoxMRE extends Application {

    private ObjectProperty<Table> table = new SimpleObjectProperty<>(Table.BIG);

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {

        VBox vBox = new VBox();
        vBox.getChildren().add(getChoiceBox(table));
        primaryStage.setScene(new Scene(vBox));
        primaryStage.show();
    }

    private <T extends Enum<T>> ChoiceBox<T> getChoiceBox(ObjectProperty<T> objectProperty) {
        ChoiceBox<T> choiceBox = new ChoiceBox<>();
        choiceBox.getItems()
                .addAll(objectProperty.getValue().getDeclaringClass().getEnumConstants());
        Bindings.bindBidirectional(objectProperty, choiceBox.valueProperty());
        return choiceBox;
    }

    enum Table {
        BIG, SMALL;
    }
}

【问题讨论】:

  • minimal reproducible example please .. 说:依稀记得这是最近修复的一个错误
  • ...找到它:JDK-8087555 ChoiceBox: uncontained value not shown,在 fx15 中修复
  • 谢谢 - 我用 MRE 编辑了我的问题。不太确定该错误是否适合问题 - 在我的情况下,所选值是支持列表的一个元素,不是吗?
  • 后续问题:我在 JDK 1.8 上运行它,我认为这是最后一个包含 JavaFX 的长期版本,主要是为了让我的客户更容易。如果 bug 确实是问题所在,有什么方法可以在不使用当前版本的 JavaFX(必须单独安装)的情况下进行修复?
  • 啊......好吧,是的,如果没有选择任何内容,自然不会显示任何内容 - 你为什么认为它会?所以不,这个问题不相关。

标签: user-interface javafx enums properties binding


【解决方案1】:

我不确定这是否是错误,但有一个简单的解决方法:只需在绑定之前选择值:

choiceBox.getSelectionModel().select(objectProperty.get());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-27
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 2018-02-12
    • 2015-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多