diff --git a/src/main/java/com/example/jmacro/wjdr/JMainController.java b/src/main/java/com/example/jmacro/wjdr/JMainController.java index 505b837..0b08844 100644 --- a/src/main/java/com/example/jmacro/wjdr/JMainController.java +++ b/src/main/java/com/example/jmacro/wjdr/JMainController.java @@ -1,16 +1,20 @@ package com.example.jmacro.wjdr; +import cn.hutool.core.thread.ThreadUtil; import com.example.jmacro.wjdr.base.Legend; import com.example.jmacro.wjdr.base.ViewRect; import com.example.jmacro.wjdr.tool.PickLegend; import com.example.jmacro.wjdr.tool.PickPoint; import com.example.jmacro.wjdr.tool.PickRect; import com.example.jmacro.wjdr.util.DialogUtil; +import com.example.jmacro.wjdr.util.TaskUtil; import javafx.fxml.FXML; import javafx.scene.control.Button; +import javafx.scene.image.Image; import javafx.scene.image.ImageView; import java.awt.*; +import java.util.concurrent.Semaphore; /** * UI控制器 @@ -30,6 +34,8 @@ public class JMainController { @FXML private ImageView preview; + private Semaphore semaphore = new Semaphore(1); + /** * 采点 */ @@ -99,9 +105,25 @@ public class JMainController { boolean stop = JMainService.stop(); this.start.setDisable(!stop); this.stop.setDisable(stop); + this.preview.setImage(null); } - public ImageView getPreview() { - return preview; + /** + * 预览 + * @param image + */ + public void preview(Image image) { + try { + if (!JMainService.getInstance().run){ + return; + } + semaphore.acquire(); + preview.setImage(image); + Thread.sleep(500); + semaphore.release(); + } catch (InterruptedException e) { + semaphore.release(); + throw new RuntimeException(e); + } } } diff --git a/src/main/java/com/example/jmacro/wjdr/util/ImageUtil.java b/src/main/java/com/example/jmacro/wjdr/util/ImageUtil.java index 7e941e5..4b0a169 100644 --- a/src/main/java/com/example/jmacro/wjdr/util/ImageUtil.java +++ b/src/main/java/com/example/jmacro/wjdr/util/ImageUtil.java @@ -115,7 +115,7 @@ public class ImageUtil { * * @param rect 区域 */ - public synchronized static void show(ViewRect rect) { + public static void show(ViewRect rect) { Robot robot = JMainService.getInstance().getMacro().getRobot(); BufferedImage screenCapture = robot.createScreenCapture(new Rectangle(rect.getLeft(), rect.getTop(), rect.getWidth(), rect.getHeight())); show(screenCapture); @@ -126,7 +126,7 @@ public class ImageUtil { * * @param image 图片 */ - public synchronized static void show(BufferedImage image) { + public static void show(BufferedImage image) { int viewSize = 100; Image showImage = image; // 图片太大时进行缩放显示 @@ -140,6 +140,6 @@ public class ImageUtil { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); ImgUtil.write(showImage, "PNG", outputStream); javafx.scene.image.Image image1 = new javafx.scene.image.Image(new ByteArrayInputStream(outputStream.toByteArray())); - JMainApplication.mainController.getPreview().setImage(image1); + JMainApplication.mainController.preview(image1); } }