5

JavaFX Scene Builder を使用して、fxml 内に ChoiceBox を配置しました。

FXML にはコントローラが割り当てられています。

私の質問は次のとおりです。変更された値について知りたい場合、どのイベントを登録する必要がありますか?

onInputMethodTextChanged="#languageSelectionModified"

これは次のコードでは機能しません

public void languageSelectionModified(Event event) {
    ChoiceBox<String> box = (ChoiceBox<String>) event.getSource();
    System.out.println(box.getValue());
}

これは最初のクリックでのみ機能します(つまり、アイテムを選択するときではなく、リストを開く):

onMouseClicked="#languageSelectionModified"

タッチまたはキーボードが入力方法である状況のために、Mouse-Events は決して良い選択ではありませんが、それでも System.out に到達できることを証明しています。

私はそれらがどこに文書化されているのかまったくわかりません(デフォルトのJava-APIでは文書化されていません)

4

2 に答える 2

5

コントローラの@FXML注入選択ボックスにリスナーを追加します。

choicebox.getSelectionModel().selectedItemProperty().addListener(choiceboxSelectionChangeListener);

選択したアイテムにバインドすることもできます。

label.textProperty().bind(choicebox.getSelectionModel().selectedItemProperty());

これは、FXMLで定義されたComboBoxのコントローラーにリスナーを接続する例です。ChoiceBoxのロジックはほとんど同じです。

于 2012-08-11T22:28:46.320 に答える