我是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中的一个类。当我跑步时,当鼠标按在图像上时它没有被击中。