15

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

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

4

1 に答える 1

39

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);
    }
});
于 2012-09-17T12:40:59.690 に答える