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