JavaFX scroolPane 中的 scollBar 在放大 fxml 时不起作用

问题描述

我有带有 ScrollPane 的 fxml,在他里面有一个 Pane。 当我放大或缩小窗格时,ScrollPane 的滚动条没有变化,我无法向左/向右/向上/向下移动以查看窗格的其余部分。

缩放时滚动条如何改变?

  • Mazedisplayer 是我创建的控制器,它扩展到 Canvas。

fxml:

<AnchorPane fx:id="aPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" onMouseClicked="#mouseClicked" onMouseDragged="#MouseDrag" prefheight="600.0" prefWidth="600.0" stylesheets="@MainStyle.css" xmlns="http://javafx.com/javafx/8.0.191" xmlns:fx="http://javafx.com/fxml/1" fx:controller="View.MyViewController">
  <ScrollPane fx:id="scrollPane" layoutY="26.0" pannable="true" prefheight="574.0" prefWidth="600.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="26.0" borderpane.alignment="CENTER">
    <Pane fx:id="pane" pickOnBounds="false" prefheight="56.0" prefWidth="585.0">
        <children>
            <Mazedisplayer fx:id="mazedisplayer" height="56.0" imageFileNameWall="./resources/images/forest.jpg" onKeypressed="#keypressed" width="585.0" />
        </children>
        <padding>
            <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
        </padding>
    </Pane>
  </ScrollPane>
</AnchorPane>

控制器:

public class MyViewController extends  AView implements Initializable {
  public Mazedisplayer mazedisplayer;
  public Pane pane;
  public AnchorPane aPane;
  public void initialize(URL location,ResourceBundle resources) {
      try {
          pane.setonScroll(new EventHandler<ScrollEvent>() {
              @Override
              public void handle(ScrollEvent event) {
                  double zoomFactor = 1.05;
                  double deltaY = event.getDeltaY();

                  if (deltaY < 0){
                      zoomFactor = 0.95;
                  }
                  pane.setScaleX(pane.getScaleX() * zoomFactor);
                  pane.setScaleY(pane.getScaleY() * zoomFactor);
                  event.consume();
              }
          });
      } catch (Exception e) {
          e.printstacktrace();
      }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)