15

当我从listviewjavafx 2 中选择一个项目时,我想执行一个操作。我使用 Netbeans JavaFX fxml 应用程序和 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 回答