Javafx2でlistview
からアイテムを選択したときに、アクションを実行したいと思います。NetbeansJavaFXfxmlアプリケーションとSceneBuilderを使用しています。 SceneBuilderのOnMouseClicked
メソッドが機能しませんでした。すでに宣言したメソッドが見つからないというエラーが返されました。
誰かがどうやってそれを機能させることができたのか教えてもらえますか?
FXMLファイルだけでそれを行うことはできません。
対応するlistViewを定義します(fx:id="myListView"
in FXML)FXMLファイルのControllerクラス:
@FXML
private ListView<MyDataModel> myListView;
リストビューアイテムの変更をリッスンするリスナーをinit/startメソッドに追加します。
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);
}
});