如何通过从JavaFX 2中的ListView中选择项来执行操作

ayu*_*nce 9 javafx javafx-2

我想有一个动作进行时,我从我的选择项目listview中的JavaFX 2,我用一个NetBeans的JavaFX应用FXML和SceneBuilder.OnMouseClickedSceneBuilder中的方法不起作用.它给了我一个错误,它无法找到我已经声明的方法.

有人可以告诉我他们是如何设法让它工作的吗?

Ulu*_*Biy 28

你不能单独在FXML文件中这样做.在FXML文件的Controller类中
定义相应的listView(假设fx:id="myListView"在FXML中):

@FXML
private ListView<MyDataModel> myListView;
Run Code Online (Sandbox Code Playgroud)

在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);
    }
});
Run Code Online (Sandbox Code Playgroud)

MyDataModel可以是您自己的数据结构模型类或只是一个String.
对于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);
    }
});
Run Code Online (Sandbox Code Playgroud)