2015-03-25 3 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

Это происходит потому, что вы видите, на самом деле view-port прокрутки. Вам необходимо применить цвет фона к портам просмотра.

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

Спасибо, что сработало, знаете ли вы, где я могу найти документацию об этом «view-port» панелей? Я никогда не слышал об этом до – Juan

+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 используемые для их стилизации. Кроме того, вы можете использовать [CSS-анализатор в SceneBuilder] (http://docs.oracle.com/javase/8/scene-builder-2/user-guide/stylesheet-support.htm#JSBRG150) для диагностики стилей CSS компонентов – ItachiUchiha

0

Попробуйте заставить панель, чтобы быть по крайней мере, высота окна просмотра панели скроллинга с

grid.minHeightProperty().bind(Bindings.createDoubleBinding(() -> 
    spane.getViewportBounds().getHeight(), spane.viewportBoundsProperty()); 
Смежные вопросы