0

我有一个由图像组成的 TilePane,tilepane 内的图像取决于用户选择的文件夹内的图像数量。但是tilepane中没有scrollpane,所以我决定把tilePane放在一个ScrollPane里面,但是我无法控制scrollpane的高度占据整个页面。

    public ScrollPane viewGallery(Stage stage)
    {
        ScrollPane root = null;
        final TilePane tile = new TilePane();
        try{

            root = new ScrollPane();
            tile.setPadding(new Insets(5, 5, 5, 5));
            tile.setVgap(4);
            tile.setHgap(4);
            tile.setPrefHeight(stage.getHeight());
            tile.setStyle("-fx-background-color: DAE6F3;");
            File[] listOfFiles = outputFolder.listFiles();
            System.out.println(outputFolder.listFiles().length);

            for (File file : listOfFiles) {

                System.out.println(file.getPath());
                Image image = new Image("file:"+file.getPath());
                ImageView iv2 = new ImageView();
                iv2.setImage(image);
                iv2.setFitWidth(250);
                iv2.setPreserveRatio(true);
                iv2.setSmooth(true);
                iv2.setCache(true);
                tile.getChildren().add(iv2);
            }

        }catch(Exception e)
        {
            e.printStackTrace();
        }

        root.setHbarPolicy(ScrollPane.ScrollBarPolicy.NEVER);    // Horizontal scroll bar
        root.setVbarPolicy(ScrollPane.ScrollBarPolicy.AS_NEEDED);    // Vertical scroll bar
        root.setFitToHeight(true);
        root.setFitToWidth(true);
        root.setContent(tile);      
        return root;
    }

输出就是这样的生活..在此处输入图像描述

4

1 回答 1

0

问题不在于scrollPane 或TilePane,我将scrollPane 添加到borderPane 并且我正在使用:

border.setTop(viewGallery(Stage stage));

只需将上面的代码更改为下面的代码即可解决我的问题..

border.setCenter(viewGallery(Stage stage));

文档很清楚:

顶部和底部的孩子将被调整到他们喜欢的高度并扩展边框的宽度。左右子节点将被调整为其首选宽度并延长顶部和底部节点之间的长度。并且中心节点将调整大小以填充中间的可用空间

于 2013-08-19T06:17:39.243 回答