2012-08-11 24 views
5

私はJavaFX Scene Builderを使ってfxmlの内部にChoiceBoxを配置しました。選択するChoiceBox-Eventはどれですか?

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

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

onMouseClicked="#languageSelectionModified" 

onInputMethodTextChanged="#languageSelectionModified" 

これは、次のコード

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

と最初のクリック(すなわち、リストを開いて項目を選択しない場合)のために、この作品だけでは動作しません。タッチまたはキーボードが入力方法であるため、Mouse-Eventsは決して良い選択にはなりませんが、System.outに到達できることはまだ証明されています。私はabsolutlyそれらのものがdocumentatedされないアイデア(デフォルトのJava-APIには、彼らはありません)

答えて

4

あなた@FXMLにリスナーを追加していない

は、あなたのコントローラでchoiceboxを注射さ:

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

ますまた、選択されたアイテムに結合することができる:ここ

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

はFXMLで定義されたコンボボックスのためのコントローラでリスナーをフックのexampleです。 ChoiceBoxのロジックはほぼ同じです。

+0

返信いただきありがとうございます。これはうまくいく。したがって、「通常の」FXMLイベントを介して行う方法はありませんか? FXMLファイルの既存の(そして定義可能な)イベントをどこで調べることができたか教えていただけたら、あなたの答えを私の質問に答えるものとしてマークします。 – Gundon

+0

いいえ、JavaFX 2.0から2.2を使用して、FXMLでこのイベントを検索することはできません。 – jewelsea

+0

choiceboxのイベントは、choiceboxの値がコードで設定されている場合でもトリガーされます(私の場合は、子選択ボックスのフォームを入力する選択肢が1つあります)。コード駆動型のものです。 – Mikeb

関連する問題