javafx-2 ComboBox には、(まだ) 文書化されていない機能があり、まったく新しいコンボ ボックスの概念が舞台裏で提案されているようです。
簡単に言えば、value プロパティは items コレクションの要素の 1 つに制限されていません。
ユーザーはアイテムの 1 つしか選択できませんが、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() メソッドは、コンポーネントによって表示される値と一貫性があります。