删除鼠标事件处理程序 JavaFX

Remove mouse event handler JavaFX

我有一个响应鼠标的代码,例如当我进入一个图像区域时,图像变暗,当我退出它时,它变得正常,问题是当我 运行 代码时,我有 9 张图片,当鼠标移到第一张图片上时它变暗,当它移到另一张图片上时,第一张图片再次变暗而第二张图片不变。

代码如下:

public class FrameController implements Initializable {

@FXML
private GridPane album;
ImageView im;

/**
 * Initializes the controller class.
 */
@Override
public void initialize(URL url, ResourceBundle rb) {
    // TODO
}

@FXML
private void mouseEntered(MouseEvent event) {
    im = (ImageView) event.getSource();
    System.out.println("Entered: " + im.getId());
    im.setOnMouseEntered(new EventHandler<MouseEvent>() {

        @Override
        public void handle(MouseEvent event) {
            ColorAdjust ca = new ColorAdjust();
            ca.setBrightness(-0.5);
            im.setEffect(ca);
            }
        });
    }
    @FXML
    private void mouseExited(MouseEvent event) {
        im = (ImageView) event.getSource();
        System.out.println("Exited: " + im.getId());
        im.setOnMouseExited(new EventHandler<MouseEvent>() {

            @Override
            public void handle(MouseEvent event) {
                im.setEffect(null);
                System.out.println("normal");
            }
        });
    }

}

我需要检查你的 fxml,但你的代码中有一个基本错误。您需要删除 onMouseEntered()onMouseExit().

的重复使用

试试

@FXML
private void mouseEntered(MouseEvent event) {
    im = (ImageView) event.getSource();
    System.out.println("Entered: " + im.getId());
    ColorAdjust ca = new ColorAdjust();
    ca.setBrightness(-0.5);
    im.setEffect(ca);
}

@FXML
private void mouseExited(MouseEvent event) {
    im = (ImageView) event.getSource();
    System.out.println("Exited: " + im.getId());
    im.setEffect(null);
}