javafx-2 ComboBox,未记录的功能:ComboBox维护一个通过setValue(T对象)设置的值,即使它不在items集合中

时间:2012-11-25 21:22:41

标签: combobox javafx-2

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

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

虽然用户只能选择其中一个项目,但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();
} 
}

输出如下。如您所见,组合显示“outsider-item”值,但之后未在列表中提出 getValue()方法与组件显示的值一致。 enter image description here

1 个答案:

答案 0 :(得分:1)

此行为已知,

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

这是一种固定且经过测试的行为,预计不会发生变化。