Scroll Pane中的TilePane只占据了屏幕的一小部分

时间:2013-08-15 09:13:13

标签: javafx-2

我有一个由图像组成的TilePane,tilepane内的图像取决于用户选择的文件夹内图像的数量。但是tilepane中没有滚动窗格,所以我决定将tilePane放在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;
    }

输出是生命的...... enter image description here

1 个答案:

答案 0 :(得分:0)

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

border.setTop(viewGallery(Stage stage));

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

border.setCenter(viewGallery(Stage stage));

文档很清楚:

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