0

javafx-2 ComboBox 似乎有一个(尚未记录的)功能,它在幕后暗示了一个全新的组合框概念。

简单地说, value 属性不被限制为 items 集合的元素之一

虽然用户只能选择其中一项,但 setValue 方法允许您设置一个值,即使它不属于集合(当然,前提是它的类型正确,但这是由泛型强制执行的)。

同样,如果 valueProperty 绑定到其他属性,则 valueProperty 将跟随其他属性的值,无论它是否在 items 属性中。

这在多种情况下可能很有用,例如当用户选择随后从项目集合中删除的项目时。

由于此功能没有记录(或者我无法找到文档),我想知道我是否可以依赖它,或者它必须考虑某种“副作用”,因此它可能会被删除框架的未来版本。

SSCE(只修复进口):

public class T08 extends Application {
@Override public void start(Stage primaryStage) throws Exception {
    ComboBox<String> c = new ComboBox(FXCollections.observableArrayList("item-a", "item-b"));
    primaryStage.setScene(new Scene(c));
    c.setValue("outsider-item");
    primaryStage.show();
} 
}

输出如下。如您所见,该组合显示“outside-item”值,但列表中未提出该值。
getValue() 方法与组件显示的值一致。 在此处输入图像描述

4

1 回答 1

1

这种行为是已知的,

我已经提交了一个问题http://javafx-jira.kenai.com/browse/RT-27543 来描述 javadoc 中的这种行为。

这是一个固定且经过测试的行为,预计不会改变。

于 2013-01-06T13:16:50.447 回答