0

我的SplitPane内部有问题ScrollPane。我需要一个类似于的可扩展滚动窗格,TableView所以当我有太多项目时我有滚动条,当我的所有项目都可见时,然后隐藏滚动条。

ScrollPane 有一个开关:fitToHeight但真/假都不能完成我需要的工作。我将上传两张截图来说明我的意思。如果它设置为true然后我根本没有滚动,这不是一个解决方案,因为我可能有太多数据无法容纳在一个窗口中,所以我需要滚动。如果它设置为false然后我总是有滚动条,即使没有数据显示在视图的底部。

我想成为动态的滚动条,所以当我拖动最后一个分隔线并且没有空间容纳最后一个项目时,滚动条应该出现,当每个项目都有空间时,SplitPane它不应该显示。

知道如何实现吗?

相关代码:

文件格式:

<?import javafx.scene.control.TableView?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.layout.VBox?>
<ScrollPane xmlns="http://javafx.com/javafx"
            xmlns:fx="http://javafx.com/fxml"
            fitToWidth="true"
            fx:controller="test.Controller">
    <SplitPane fx:id="splitPane" orientation="VERTICAL">
        <VBox spacing="5" minHeight="20">
            <Label text="*Title*" VBox.vgrow="NEVER"/>
            <TextArea VBox.vgrow="ALWAYS"/>
        </VBox>
        <VBox minHeight="20" spacing="5">
            <Label text="*Title*" VBox.vgrow="NEVER"/>
            <TableView VBox.vgrow="ALWAYS">
                <columns>
                    <TableColumn/>
                </columns>
            </TableView>
        </VBox>
        <VBox minHeight="20" spacing="5">
            <Label text="*Title*" VBox.vgrow="NEVER"/>
            <TableView VBox.vgrow="ALWAYS">
                <columns>
                    <TableColumn/>
                </columns>
            </TableView>
        </VBox>
        <VBox minHeight="20" spacing="5">
            <Label text="*Title*" VBox.vgrow="NEVER"/>
            <TextArea VBox.vgrow="NEVER"/>
        </VBox>
        <padding>
            <Insets topRightBottomLeft="5"/>
        </padding>
    </SplitPane>
</ScrollPane>

控制器:

public class Controller implements Initializable {

    @FXML
    private SplitPane splitPane;

    @Override
    public void initialize(URL location, ResourceBundle resources) {
        splitPane.setDividerPositions(0d,.33d, .66d,1d);
    }

}

主要的:

public class Main extends Application {

    public void start(Stage primaryStage) throws Exception {
        FXMLLoader loader = new FXMLLoader(getClass().getResource("View.fxml"));
        ScrollPane pane = loader.load();
        primaryStage.setScene(new Scene(pane, 800, 600));
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

在这里我有滚动条,即使不需要滚动,每个项目都是可见的

合身

这里我没有滚动条

适合

4

0 回答 0