web-dev-qa-db-ja.com

JavaFX2のListViewからアイテムを選択してアクションを実行する方法

Javafx2でlistviewからアイテムを選択したときに、アクションを実行したいと思います。NetbeansJavaFXfxmlアプリケーションとSceneBuilderを使用しています。 SceneBuilderのOnMouseClickedメソッドが機能しませんでした。すでに宣言したメソッドが見つからないというエラーが返されました。

誰かがどうやってそれを機能させることができたのか教えてもらえますか?

9
ayu_trance

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);
    }
});
28
Uluk Biy