我有一个带有图像的ImageView,当点击图像时,应该触发一个MouseClicked事件。但是,应用程序甚至不打印测试线。
Image cancel = new Image("/cancel.svg.png", 15, 15, false, false);
ImageView view = new ImageView(cancel);
view.setPickOnBounds(true);
view.setOnMouseClicked(new EventHandler<MouseEvent>(){
@Override
public void handle(MouseEvent event) {
System.out.println("hi");
/** execute code **/
}
});
完整版: 我有一个名为“found_tags_list”的ListView,ListView中的每个单元都应该是一个名为“ButtonListCell”的新类。我这样做是为了根据一些陈述为单元格添加额外的内容。
found_tags_list.setCellFactory(new Callback<ListView<String>, ListCell>() {
@Override
public ListCell call(ListView<String> param) {
return new ButtonListCell();
}
});
整个Cell类:
class ButtonListCell extends ListCell<String> {
@Override
public void updateItem(String obj, boolean empty) {
super.updateItem(obj, empty);
if (obj == null || obj.isEmpty() || empty) {
setText(null);
setGraphic(null);
} else {
setText(obj);
if (valid_tags.indexOf(obj) >= 0) {
setTextFill(Color.GREEN);
setGraphic(null);
} else {
Image cancel = new Image("/cancel.png", 15, 15, false, false);
ImageView view = new ImageView(cancel);
view.setPickOnBounds(true);
view.setOnMouseClicked(new EventHandler<MouseEvent>(){
@Override
public void handle(MouseEvent event) {
System.out.println("hi");
String item = getItem();
found_tags_list.getItems().remove(item);
for (Tag tag : rfidset) {
if (tag.getId().equals(item)) {
rfidset.remove(tag);
return;
}
}
}
});
setGraphic(view);
setTextFill(Color.RED);
setContentDisplay(ContentDisplay.RIGHT);
}
}
}