将不透明度设置为ScrollPane

时间:2015-03-25 12:25:05

标签: javafx javafx-2 scrollpane javafx-css

我有一个带有ScrollPane内部按钮的GridPane。当所需数量的按钮不足以填充ScrollPane的最大尺寸时,它看起来如下图所示。我需要将此空白点设置为包含它的窗格的背景颜色。

我尝试将网格的背景颜色设置为包含它的背景窗格的相同颜色,但它只是用按钮为线条着色。如果我尝试将ScrollPane的不透明度设置为0,它也会设置按钮的不透明度,因此即使我在此之后设置了按钮的不透明度,我也看不到任何内容。

我怎么能这样做?

    .
    .
    .
    GridPane grid = new GridPane();

    int i=0;
    for (int r = 0; r <= new Double(this.buttons.size()/BUTTONS_LINE).intValue(); r++) {
        for (int c = 0; c < BUTTONS_LINE; c++) {
            if(i < this.buttons.size()){
                grid.add(this.buttons.get(i), c, r);
                i++;
            }else{
                break;
            }
        }
    }
    ScrollPane spane = new ScrollPane(grid);
    grid.getStyleClass().add("grid");
    grid.setPrefWidth(0.2*Screen.getMainScreen().getWidth());
    spane.getStyleClass().add("scrollPane");
    /*spane.setOpacity(0);
    grid.setOpacity(1);
    for(int j=0; j<grid.getChildren().size();j++){
        grid.getChildren().get(j).setOpacity(1);
    }*///When I try this, buttons aren't visible neither
    spane.setMaxSize(0.2*Screen.getMainScreen().getWidth(), 0.2*Screen.getMainScreen().getHeight() );
    .
    .
    .

和css:

.scrollPane{
    -fx-background-color: #afafaf;
    -fx-control-inner-background: #afafaf;
}

.grid{
    -fx-background-color:#afafaf;
}

2 个答案:

答案 0 :(得分:1)

这种情况正在发生,因为您看到的实际上是滚动窗格的view-port。您需要将背景颜色应用于视口。

.scrollPane > .viewport {
   -fx-background-color: #afafaf;
}

答案 1 :(得分:0)

尝试使用

强制窗格至少为滚动窗格视口的高度
grid.minHeightProperty().bind(Bindings.createDoubleBinding(() -> 
    spane.getViewportBounds().getHeight(), spane.viewportBoundsProperty());