2015-03-25 136 views
0

我有一個GridPane的ScrollPane內的按鈕。當所需數量的按鈕不足以填充ScrollPane的最大尺寸時,它看起來像下面的圖像。我需要將此空白點設置爲包含它的窗格的背景顏色。設置不透明度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; 
} 

回答

1

發生這種情況,因爲你看到的是滾動條窗格視口的高度實際上是scrollpane的view-port。您需要將背景顏色應用於視圖端口。

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

謝謝你的工作,你知道我在哪裏可以找到關於這個窗口的「視圖端口」的文檔?我從來沒有聽說過 – Juan 2015-03-25 14:14:11

+0

不幸的是,沒有關於這個(或者我知道的)的文檔。但是你可以通過[JavaFX的源代碼](http://hg.openjdk.java.net/openjfx/8u40/rt/file/eb264cdc5828/modules/)或通過[Modena css](http:// hg.openjdk.java.net/openjfx/8u40/rt/file/tip/modules/controls/src/main/resources/com/sun/javafx/scene/control/skin/modena/modena.css)找到styleclass的文件用於風格他們。此外,您還可以使用[SceneBuilder中的CSS分析器](http://docs.oracle.com/javase/8/scene-builder-2/user-guide/stylesheet-support.htm#JSBRG150)來診斷CSS樣式的組件 – ItachiUchiha 2015-03-25 14:24:49

0

嘗試迫使窗格至少是與

grid.minHeightProperty().bind(Bindings.createDoubleBinding(() -> 
    spane.getViewportBounds().getHeight(), spane.viewportBoundsProperty());