Javafx:如何将鼠标操作分组到图像上

时间:2017-12-27 18:55:25

标签: java javafx

我是Javafx的新手,我正在尝试修复图像上的裁剪。我找到了一个有趣的rubber band裁剪解决方案,现在我尝试在我的场景中修改它。 我有两个控制器。一个控制器具有裁剪按钮(CropController)和另一个包含ImageController图像的控制器。

CropController:

public class CropController {

    @FXML
    private void initialize() {}

    @FXML
    private void handleCrop(){
    }

}

ImageController:

public class ImageController {

    @FXML
    private ImageView MainImage;

    @FXML
    private void initialize() {
        modelSharedOne.imageProperty()
        .addListener((obs, oldImage,newImage)-> MainImage.setImage(newImage));
    }

    @FXML
    private void handleMousePresses(){}

    @FXML
    private void handleMouseDragged(){}

    @FXML
    private void handleMouseReleased(){}

}

基于橡皮筋解决方案,我需要对这三个鼠标处理程序进行分组。我不知道什么是最好的解决方案。我尝试了很多解决方案,比如在这两个控制器之间创建模型,但我还没有设法解决这个问题。 任何人都知道如何解决这个问题?

我目前的解决方案

CropController:

public class ToolboxController {

    @FXML
    private void initialize() {

    }

    @FXML
    private void handleCrop(){

        SharedModelTwo.callHandlerInWorkstation();
    }
}

SharedModelTwo:

public class CropImageModel {

ImageController imageController;

    public void callHandlerInImage(){

        imageController = new ImageController();
        imageController.handleCrop();
    }

}

ImageController:

public class ImageController {

    @FXML
    private ImageView MainImage;

    @FXML
    private void initialize() {
        modelSharedOne.imageProperty()
            .addListener((obs, oldImage,newImage)-> MainImage.setImage(newImage));
    }

    public void handleCrop() {
        Image image = getImage();
        ImageView imageView = new ImageView(image);

        rect = new Rectangle( 0,0,0,0);
        rect.setStroke(Color.BLUE);
        rect.setStrokeWidth(1);
        rect.setStrokeLineCap(StrokeLineCap.ROUND);
        rect.setFill(Color.LIGHTBLUE.deriveColor(0, 1.2, 1, 0.6));

        Group imageLayer = new Group();
        imageLayer.getChildren().add(imageView);
        rubberBandSelection = new RubberBandSelection(imageLayer);
    }
}

而rubberBandSelection是linked中的一个类。当我跑步时,当鼠标按在图像上时它没有被击中。

0 个答案:

没有答案