2012-09-17 12 views
5

javafx 2のlistviewから項目を選択したときにアクションを実行したいと考えています。 Netbeans JavaFX fxmlアプリケーションとSceneBuilderを使用します。 SceneBuilderのOnMouseClickedメソッドが機能しませんでした。すでに宣言しているメソッドが見つからないというエラーが返されました。JavaFX 2のListViewから項目を選択してアクションを実行する方法

誰かがどのように動作させることができたか教えていただけますか?

答えて

19

FXMLファイルだけではできません。
はFXMLファイルのコントローラクラスに対応するリストビュー(FXMLでfx:id="myListView"を仮定)を定義します。

@FXML 
private ListView<MyDataModel> myListView; 

は、リストビュー項目の変化に耳を傾けるだろう方法を開始/ initの中にリスナーを追加します。

myListView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<MyDataModel>() { 

    @Override 
    public void changed(ObservableValue<? extends MyDataModel> observable, MyDataModel oldValue, MyDataModel newValue) { 
     // Your action here 
     System.out.println("Selected item: " + newValue); 
    } 
}); 

MyDataModelは、独自のデータ構造モデルクラスまたは単にStringにすることができます。
文字列の例の場合、

@FXML 
private ListView<String> myListView; 

... 
... 

ObservableList<String> data = FXCollections.observableArrayList("chocolate", "blue"); 
myListView.setItems(data); 

myListView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() { 
    @Override 
    public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) { 
     // Your action here 
     System.out.println("Selected item: " + newValue); 
    } 
}); 
+0

ありがとうございました。しかし、MyDataModelに問題があります。私はそれを文字列として試しました..文字列のように= "テスト"; ObservableList data = FXCollections.observableArrayList( "chocolate"、 "blue");両方は私のために働いていない..それはクラスを求める...あなたは私に例を教えてくれますか? –

関連する問題