为什么JavaFX只接收一次鼠标事件?

时间:2015-03-23 18:25:39

标签: javafx event-handling mouseevent fxml

我正在开发一个应用程序,我可以将ImageView拖放到任何地方。当我运行应用程序时,它第一次拖动ImageView时工作正常,但在我发布后没有响应。

这是我的FXML控制器:

@FXML
private ImageView card;

@FXML
private void handleCardMousePressed(MouseEvent event) {
    System.out.println("Drag Entered");
    DropShadow dropShadow=new DropShadow();
    dropShadow.setColor(Color.rgb(18,139,237));
    dropShadow.setSpread(.48);
    card.setEffect(dropShadow);
    card.setMouseTransparent(true);
    event.consume();
}

@FXML
private void handleCardMouseDragged(MouseEvent event){
    System.out.println("In Drag");
    card.setLayoutX(event.getSceneX());
    card.setLayoutY(event.getSceneY());
    event.consume();
}
@FXML
private void handleCardMouseReleased(MouseEvent event){
    System.out.println("Exit Drag");
    card.setEffect(null);
    event.consume();
}

Video of What is Happening

1 个答案:

答案 0 :(得分:1)

请勿在{{1​​}}方法中将mouseTransparent设置为true

如果由于其他原因需要执行此操作(我无法理解您的原因),那么在handleMouseCardPressed中您需要将handleCardMouseReleased(...)设置为false:

mouseTransparent

完整示例:

    card.setMouseTransparent(false);