JavaFX:使用动态信息滚动窗格(标签,文本字段,按钮)

时间:2014-05-14 17:09:05

标签: javafx scrollpane

如何将窗格(内部元素)设为可滚动?

在FXML文件中,我已经放入ScrollPane,Pane我希望它是Scrollable。 它的正确吗?或者我错了?

ScrollPane.setContent(窗格);

1 个答案:

答案 0 :(得分:1)

是的,这是正确的。创建FXML文件后,您只需将其显示为:

public void start(Stage stage) throws Exception {
    Parent root = FXMLLoader.load(getClass().getResource("NAME_OF_FXML.fxml"));
    Scene scene = new Scene(root);
    stage.setTitle("ScrollPane Example");
    stage.setScene(scene);
    stage.show();
}

FXML文件应如下所示:

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

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

<AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8" fx:controller="REFERENCE_TO_CONTROLLER">
   <children>
      <ScrollPane prefHeight="200.0" prefWidth="320.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
         <content>
            <Pane prefHeight="382.0" prefWidth="386.0"> <!-- Add FXML id to your pane here -->
               <children>
                  <Label layoutX="14.0" layoutY="14.0" text="Element 1" />
                  <Label layoutX="14.0" layoutY="170.0" text="Element 2" />
                  <Label layoutX="14.0" layoutY="352.0" text="Element 3" />
               </children>
            </Pane>
         </content>
      </ScrollPane>
   </children>
</AnchorPane>

请注意,您的窗格必须大于滚动窗格才能显示滚动条。结果应如下所示:

Scrollpane screenshot

如果要向窗格中动态添加信息,可以在FXML文件中为窗格指定FXML ID,然后使用控制器类获取对它的引用。可以从FXML资源获取控制器类,如下所示:

FXMLLoader myLoader = new FXMLLoader(getClass().getResource("NAME_OF_FXML.fxml"));
screenController = myLoader.getController();