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()方法与组件显示的值一致。
答案 0 :(得分:1)
此行为已知,
我提交了一个问题http://javafx-jira.kenai.com/browse/RT-27543 在javadoc中描述这种行为。
这是一种固定且经过测试的行为,预计不会发生变化。