5
private void initialize() {
    loadPersistenceContext();

    List<Events> events = getEventsChoiceBox(getPersistenceContext());
    ObservableList<Event> data = FXCollections.observableList(events);

    cbEvent.setItems(data); // Inserting data into the ChoiceBox
}

これが私のメインコードです。問題は、フォームが読み込まれるときに、プロパティではなく、ChoiceBoxにオブジェクトが挿入されることです。

これは私のリストイベントの内容です

Object[]
|- String
|- Integer
Object[]
|- String
|- Integer

そのため、Stringプロパティが表示され、整数がコントローラーにマップされたChoiceBoxが必要です。

私はたくさんのことを試みましたが、それを理解することができませんでした。

4

3 に答える 3

5

これがforums.oracle.comからの別の簡単な実装です

key-valueのクラスを作成します

public class KeyValuePair {
   private final String key;
   private final String value;
   public KeyValuePair(String key, String value) {
   this.key = key;
   this.value = value;
   }

  public String getKey()   {    return key;    }

  public String toString() {    return value;  }
}

次に、ChoiceBoxを次のように作成します。

ChoiceBox<KeyValuePair> choiceBox = new ChoiceBox<KeyValuePair>();

要素を次のように入力します。

choiceBox .getItems().add(new KeyValuePair("1", "Active"));

ヒント:データベースからキーと値のペアをArrayListに取得し、繰り返します

値を取得するには:

choiceBox.getValue().getKey();  // returns the "1"
choiceBox.getValue().toString();  // returns the "Active"
于 2013-10-21T02:27:55.953 に答える
4

データベースIDに基づくJavaFXChoiceBoxコントロールのこの例を参照してください。

この例は、データベースの行IDと、Choiceボックスに表示されるアイテムの文字列表現で構成されるChoiceクラスを定義することで機能します。デフォルトtoStringのChoiceメソッドは、データベースIDではなく、表示されるアイテムの文字列表現を返すカスタム実装でオーバーライドされます。ChoiceBoxに選択肢を追加すると、ChoiceBoxは各選択肢を表示用の文字列に変換します。toString表示されるChoiceの文字列値は、データベースIDを含めたり、意味のないオブジェクト参照を表示するだけのデフォルトのChoiceを使用したりするのではなく、単なる選択テキストです。

choiceboxサンプルアプリの出力:

choiceboxサンプルアプリの出力

また、ComboBoxには、ノードの表示から( CellFactoryを介して)ノードの値を抽象化するメカニズムが組み込まれているため、このような実装についても検討してください。ただし、aの使用は、ComboBox多くの場合、より複雑ですChoiceBox

于 2013-03-21T18:29:21.507 に答える
1

または、単に: 、 (JavaDocmyChoiceBox.setConverter(myStringConverter) )の独自のサブクラスのインスタンスを渡します。javafx.util.StringConverter

toString(およびfromString)をオーバーライドするtoStringと、オブジェクト自体にを実装しなくても、オブジェクトの表示方法を完全に制御できます。

于 2016-11-28T20:20:48.663 に答える