ImageView上的JavaFX onMouseClickedEvent

时间:2018-03-07 09:18:05

标签: javafx

我有一个带有图像的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);
         }
     }
}

0 个答案:

没有答案