FXML ScrollPane не показывает дочерние элементы во всем окне

#java #javafx #fxml

#java #javafx #fxml

Вопрос:

Я впервые работаю с JavaFX FXML. Я пытаюсь реализовать представление ScrollPane в окне графического интерфейса. Предположим, я хочу показать список книг. Итак, графический интерфейс должен быть прокручиваемым. Но в моем представлении ScrollPane его дочерние элементы отображаются только в углу полного графического интерфейса, а не во всем теле.

Ниже приведен мой код FXML:

 <?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.net.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<ScrollPane fx:id="scrollPane"  xmlns:fx="http://javafx.com/fxml/1" id="AnchorPane" 
        prefHeight="400.0" prefWidth="1000.0" pannable="true"
        fx:controller="bookinventory.BooksAllController"
                fitToHeight="true" fitToWidth="true">
    <content>
        <VBox fx:id="allbookbox" VBox.vgrow="ALWAYS" > 
          <children>  

        <Label fx:id="nameLbl"
           layoutX="100.0" layoutY="50.0" style="-fx-font-size:15px; -fx-underline: true; -fx-border-width: 0 0 5 0;"
           prefHeight="20.0" prefWidth="100.0" text="Book Name" textAlignment="LEFT" />

        <Label fx:id="writerNameLbl"
               layoutX="300.0" layoutY="50.0" style="-fx-font-size:15px; -fx-underline: true; -fx-border-width: 0 0 1 0;"
               prefHeight="20.0" prefWidth="100.0" text="Writer Name" textAlignment="LEFT" />

        <Label fx:id="genreLbl" style="-fx-font-size:15px; -fx-underline: true; -fx-border-width: 0 0 1 0;"
               layoutX="500.0" layoutY="50.0"
               prefHeight="20.0" prefWidth="100.0" text="Genre" textAlignment="LEFT" />

        <Label fx:id="priceLbl" style="-fx-font-size:15px; -fx-underline: true; -fx-border-width: 0 0 1 0;"
               layoutX="700.0" layoutY="50.0"
               prefHeight="20.0" prefWidth="100.0" text="Price" textAlignment="LEFT" />

        <Label fx:id="actionLbl" style="-fx-font-size:15px; -fx-underline: true; -fx-border-width: 0 0 1 0;"
               layoutX="900.0" layoutY="50.0"
               prefHeight="20.0" prefWidth="100.0" text="Action" textAlignment="LEFT" />

       </children>
    </VBox> 
    </content>

</ScrollPane>
  

ниже приведен текущий вид этого кода:

Текущий результат кода

Мне нужен вид, подобный следующему, с вертикальной полосой прокрутки:

Желаемый результат

Любая помощь?

Комментарии:

1. используйте более подходящие макеты — подсказка: вы ожидаете горизонтальный макет, но используете VBox в fxml 😉

2. Похоже, вам нужен табличный пользовательский интерфейс, и в этом случае вам следует использовать a TableView (который имеет встроенную собственную функцию прокрутки).

3. Учебное пособие по работе с макетами в JavaFX невероятно полезно.

4. Вероятно, вы хотите, чтобы flowpane обеспечивал функциональность адаптивного типа по ширине окна.

5. Спасибо @kleopatra, сейчас я использую HBox, он работает 🙂