Почему моя прокрутка javafx сразу прокручивается вниз? - PullRequest
0 голосов
/ 03 июля 2019

У меня есть панель настроек, размер которой не может быть изменен и которая становится переполненной, поэтому я решил добавить сетку, содержащую настройки, в область прокрутки.Проблема в том, что панель прокрутки запускается внизу при запуске приложения.Странно то, что я установил HValue в 0, чтобы он начинался сверху.Это рисунок, показывающий его в построителе сцен: https://gyazo.com/f10a1641b8357e4fc30cd180c0425dae Никакой код не взаимодействует с панелью прокрутки вообще, и, как вы можете видеть, окно предварительного просмотра построителя сцен также имеет ту же проблему, поэтому оно имеет какое-то отношение к FXML.Чтобы воспроизвести его, вы можете просто настроить проект javafx, используя общий доступный ниже fxml, а затем просто запустить его и посмотреть, как полоса прокрутки переходит вниз.Полный файл FXML: https://pastebin.com/aS3Dn3pH. Фрагмент только содержимого полосы прокрутки:

 <AnchorPane fx:id="settingsPane" layoutY="86.0" prefHeight="381.0" prefWidth="380.0">
    <ImageView layoutX="84.0" layoutY="-28.0" pickOnBounds="true" preserveRatio="true">
        <Image url="@images/up.png" />
    </ImageView>
  <ScrollPane fx:id="settingsScrollPane" hbarPolicy="NEVER" pickOnBounds="false" prefWidth="480.0" stylesheets="@style.css" vvalue="1.0" AnchorPane.bottomAnchor="0.0" AnchorPane.topAnchor="0.0">
     <content>
          <GridPane hgap="10.0" maxHeight="-Infinity" prefWidth="480.0">
              <columnConstraints>
                  <ColumnConstraints halignment="LEFT" hgrow="SOMETIMES" minWidth="10.0" prefWidth="270.0" />
                  <ColumnConstraints halignment="RIGHT" hgrow="SOMETIMES" minWidth="10.0" prefWidth="270.0" />
              </columnConstraints>
              <rowConstraints>
                  <RowConstraints maxHeight="-Infinity" minHeight="35.0" prefHeight="30.0" />
                  <RowConstraints maxHeight="-Infinity" minHeight="35.0" prefHeight="30.0" vgrow="SOMETIMES" />
                  <RowConstraints maxHeight="-Infinity" minHeight="35.0" prefHeight="30.0" vgrow="SOMETIMES" />
                  <RowConstraints maxHeight="-Infinity" minHeight="35.0" prefHeight="30.0" vgrow="SOMETIMES" />
                  <RowConstraints maxHeight="-Infinity" minHeight="35.0" prefHeight="30.0" vgrow="SOMETIMES" />
                  <RowConstraints maxHeight="-Infinity" minHeight="35.0" prefHeight="30.0" vgrow="SOMETIMES" />
                  <RowConstraints maxHeight="-Infinity" minHeight="35.0" prefHeight="30.0" vgrow="SOMETIMES" />
                  <RowConstraints maxHeight="-Infinity" minHeight="35.0" prefHeight="30.0" vgrow="SOMETIMES" />
                  <RowConstraints maxHeight="-Infinity" minHeight="35.0" prefHeight="30.0" vgrow="SOMETIMES" />
                  <RowConstraints maxHeight="-Infinity" minHeight="35.0" prefHeight="30.0" vgrow="SOMETIMES" />
              <RowConstraints maxHeight="-Infinity" minHeight="35.0" prefHeight="30.0" vgrow="SOMETIMES" />
              <RowConstraints maxHeight="-Infinity" minHeight="35.0" prefHeight="30.0" vgrow="SOMETIMES" />
              </rowConstraints>
              <padding>
                  <Insets bottom="20.0" left="30.0" right="30.0" top="20.0" />
              </padding>
              <Label text="%no_away" textFill="WHITE" GridPane.valignment="BOTTOM">
                  <font>
                      <Font size="16.0" />
                  </font>
              </Label>
              <Label alignment="TOP_LEFT" text="%no_away_message" textFill="#f2efef" wrapText="true" GridPane.rowIndex="1" GridPane.valignment="TOP">
                  <font>
                      <Font size="13.0" />
                  </font>
              </Label>
              <Label text="%auto_queue" textFill="WHITE" GridPane.rowIndex="2" GridPane.valignment="BOTTOM">
                  <font>
                      <Font size="16.0" />
                  </font>
              </Label>
              <Label text="%auto_queue_message" textFill="#f2efef" wrapText="true" GridPane.rowIndex="3" GridPane.valignment="TOP">
                  <font>
                      <Font size="13.0" />
                  </font>
              </Label>
              <Label text="%quick_replies" textFill="WHITE" GridPane.rowIndex="4" GridPane.valignment="BOTTOM">
                  <font>
                      <Font size="16.0" />
                  </font>
              </Label>
              <Label text="%quick_replies_message" textFill="#f2efef" wrapText="true" GridPane.rowIndex="5" GridPane.valignment="TOP">
                  <font>
                      <Font size="13.0" />
                  </font>
              </Label>
              <Separator opacity="0.33" prefHeight="1.0" prefWidth="307.0" GridPane.columnSpan="2" GridPane.rowIndex="10" />
              <JFXButton fx:id="craftKeyBtn" maxWidth="1.7976931348623157E308" onAction="#handleSettingsButtonPressed" prefHeight="31.0" prefWidth="180.0" style="-fx-background-color: #1e2328; -fx-border-color: d9ae50;" text="%craft_all_keys" textFill="#d9ae50" GridPane.halignment="CENTER" GridPane.hgrow="ALWAYS" GridPane.rowIndex="11" GridPane.valignment="CENTER">
                  <font>
                      <Font name="System Bold" size="11.0" />
                  </font>
              </JFXButton>
              <JFXButton fx:id="disenchantBtn" maxWidth="1.7976931348623157E308" onAction="#handleSettingsButtonPressed" prefHeight="31.0" prefWidth="180.0" ripplerFill="#1986b1" style="-fx-background-color: #1e2328; -fx-border-color: d9ae50;" text="%disenchant_champions" textFill="#d9ae50" GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.rowIndex="11" GridPane.valignment="CENTER">
                  <font>
                      <Font name="System Bold" size="11.0" />
                  </font>
              </JFXButton>
              <JFXToggleButton fx:id="noAwayBtn" onAction="#handleToggleButtonPressed" prefHeight="60.0" prefWidth="120.0" size="11.0" text="On" textFill="#eda678" toggleColor="#eda678" toggleLineColor="#eba478e2" GridPane.columnIndex="1" GridPane.rowIndex="0" GridPane.rowSpan="2">
                  <font>
                      <Font size="13.0" />
                  </font>
              </JFXToggleButton>
              <JFXToggleButton fx:id="autoQueueBtn" onAction="#handleToggleButtonPressed" prefHeight="60.0" prefWidth="120.0" size="11.0" text="On" textFill="#eda678" toggleColor="#eda678" toggleLineColor="#eba478e2" GridPane.columnIndex="1" GridPane.rowIndex="2" GridPane.rowSpan="2">
                  <font>
                      <Font size="13.0" />
                  </font>
              </JFXToggleButton>
              <JFXToggleButton fx:id="quickReplyBtn" onAction="#handleToggleButtonPressed" prefHeight="60.0" prefWidth="120.0" size="11.0" text="On" textFill="#eda678" toggleColor="#eda678" toggleLineColor="#eba478e2" GridPane.columnIndex="1" GridPane.rowIndex="4" GridPane.rowSpan="2">
                  <font>
                      <Font size="13.0" />
                  </font>
              </JFXToggleButton>
              <Label text="%autoupdate_state" textFill="WHITE" GridPane.rowIndex="6" GridPane.valignment="BOTTOM">
                  <font>
                      <Font size="16.0" />
                  </font>
              </Label>
              <Label text="%autoupdate_message" textFill="#f2efef" wrapText="true" GridPane.rowIndex="7" GridPane.valignment="TOP">
                  <font>
                      <Font size="13.0" />
                  </font>
              </Label>
              <JFXToggleButton fx:id="autoUpdateBtn" onAction="#handleToggleButtonPressed" prefHeight="60.0" prefWidth="120.0" size="11.0" text="On" textFill="#eda678" toggleColor="#eda678" toggleLineColor="#eba478e2" GridPane.columnIndex="1" GridPane.rowIndex="6" GridPane.rowSpan="2">
                  <font>
                      <Font size="13.0" />
                  </font>
              </JFXToggleButton>
           <Label text="%force_english" textFill="WHITE" GridPane.rowIndex="8" GridPane.valignment="BOTTOM">
              <font>
                 <Font size="16.0" />
              </font>
           </Label>
           <Label text="%force_english_message" textFill="#f2efef" wrapText="true" GridPane.rowIndex="9" GridPane.valignment="TOP">
              <font>
                 <Font size="13.0" />
              </font>
           </Label>
           <JFXToggleButton fx:id="force_english_btn" onAction="#handleToggleButtonPressed" prefHeight="60.0" prefWidth="120.0" size="11.0" text="On" textFill="#eda678" toggleColor="#eda678" toggleLineColor="#eba478e2" GridPane.columnIndex="1" GridPane.rowIndex="8" GridPane.rowSpan="2">
              <font>
                 <Font size="13.0" />
              </font>
           </JFXToggleButton>
          </GridPane>
     </content>
  </ScrollPane>
</AnchorPane>

1 Ответ

0 голосов
/ 04 июля 2019

Добавление focusTraversable="false" к каждому узлу в области сетки решило проблему.Проблема заключалась в том, что при запуске она фокусировалась на кнопке внизу, перемещая ползунок туда.Это решение просто делает так, чтобы ничто не фокусировалось случайным образом без участия пользователя.

...