我实现了缩小字段(Canvas)的功能,点击按钮.原则上,一切都正常工作,但是当你缩小时,白色区域会出现在画布所在的滚动窗格中.

我try 的所有选项都在代码中提供. 有没有可能使滚动窗格的内部区域根据画布的大小而改变,并go 除白色区域?

public class GameView {
    @FXML public Canvas gameField;
    @FXML public ScrollPane scrollPane; 

public void doZoomOut() {
        Scale scale = new Scale(gameField.getScaleX() * 0.8, gameField.getScaleY() * 0.8);
        gameField.getTransforms().add(scale);

        scrollPane.resize(gameField.getWidth(), gameField.getHeight()); //doesn't work
        scrollPane.setPrefViewportWidth(gameField.getWidth()); //doesn't work
        scrollPane.setPrefViewportHeight(gameField.getHeight()); //doesn't work
        //Fit to Width/Height also doesn't work
        scrollPane.setPrefWidth(gameField.getWidth()); //doesn't work
    }
}
<ScrollPane fx:id="scrollPane" fitToHeight="true" fitToWidth="true" style="-fx-background-color: transparent;" stylesheets="@../../../style.css">
    <styleClass>
               <String fx:value="scroll-bar" />
               <String fx:value="corner" />
               <String fx:value="thumb" />
    </styleClass>
    <Canvas fx:id="gameField" height="700.0" width="1200.0" />
</ScrollPane>

Photo of the problem

推荐答案

如果这能帮助任何人. 这个问题通过对这群人的围攻而得到解决.解决方案是用这个post

public void doZoomOut() {
    //two lines added
    Group contentGroup = new Group(gameField);
    scrollPane.setContent(contentGroup);

    Scale scale = new Scale(gameField.getScaleX() * 0.8, gameField.getScaleY() * 0.8);
    gameField.getTransforms().add(scale);
}

fixed version

Java相关问答推荐

获取拦截器内部的IP地址

虚拟线程似乎在外部服务调用时阻止运营商线程

将成为一个比较者.比较…在现代Java中,编译器会对`CompareTo`方法进行优化吗?

如何在访问完所有文件后加入所有线程?

neo4j java驱动程序是否会在错误发生时自动回滚事务?

调用引发泛型异常的泛型方法时出现编译错误

如何在运行时动态创建表(使用Java、JPA、SprringBoot)

在Java中,如何按一个属性升序,然后按另一个属性降序对对象列表进行排序?

如何让DTO接受空字符串字段,但如果它们不为空,则应用JPA验证?

如何让JavaFx应用程序识别依赖项?

Java17支持哪个MapR版本?

如何在JUNIT测试中覆盖ExecutorService?

使用SWIG将C++自定义单元类型转换为基本Java类型

如何在IntelliJ IDEA的Build.sbt中添加外部JAR文件?

具有最大共同前景像素的图像平移优化算法

Android无法在Java代码中调用Kotlin代码,原因是在Companion中使用Kotlin枚举时

活泼的一次判断成语,结果中等

Kotlin-仅替换字符串中最后一个给定的字符串

如何在JSP中从select中获取值并将其放入另一个select

找不到 jar 文件系统提供程序try 使用 jdeps 和 jlink 创建收缩 Java 映像来运行 Minecraft