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() 方法与组件显示的值一致。