2013-07-09 17 views
9

Mam problem z domyślnym tłem i ramką ScrollPane. Użycie tego stylu sprawiło, że problem jest wyraźniejszy.JavaFX ScrollPane border and background

setStyle("-fx-background-color:blue; -fx-border-color:crimson;"); 

Image show the background and the border

Próbowałem ten styl i mam szczęścia tylko czerwona granica poszedł i zostawił mnie z jednego niebieskiego.

setStyle("-fx-background-color:blue; -fx-background-insets:0; -fx-border-color:crimson; -fx-border-width:0; -fx-border-insets:0;"); 

Image show the background and the border after my best work around

Szukałem na tym starym stanowisku JavaFX Hide ScrollPane gray border i http://docs.oracle.com/javafx/2/ui_controls/editor.htm

Ta linia kodu nie działa ani

scrollPane.getStyleClass().add("noborder-scroll-pane"); 

Dzięki

+0

W JavaFX 8 z nowym domyślnym motywem kolory tła ScrollPane mogą być trudne do ustawienia. W tych przypadkach zobacz http: // stackoverflow.com/questions/22952531/scrollpanes-in-javafx-8-zawsze-mieć-szare tło –

Odpowiedz

15

mam znalazłem rozwiązanie i chciałem pisać tutaj, aby inni nie musieli marnować czasu, znaleźć go ponownie.

Patrząc na domyślne css JavaFx (caspian.css), które zostało wyodrębnione z biblioteki za pomocą tego polecenia.

jar xf jfxrt.jar com/sun/javafx/scene/control/skin/caspian/caspian.css 

Widziałam, że jeden Tęskniłem jest

-fx-padding: 0; 

Więc to jest klasa css używam.

.scroll-pane { 
    -fx-background-insets: 0; 
    -fx-padding: 0; 
} 

.scroll-pane:focused { 
    -fx-background-insets: 0; 
} 

.scroll-pane .corner { 
    -fx-background-insets: 0; 
} 
1

Można użyć:

-fx-background-color: transparent; 
-fx-control-inner-background: transparent; 

Jeśli ustawisz tylko -fx-background-color, widać, zmiana koloru jest stosowany wyłącznie do wewnętrznych krawędzi ScrollPane, a kolor obszaru środkowej nadal nie zmienił .

Właściwość -fx-control-inner-background zmieni kolor tego środkowego obszaru.

7

Wydaje się, że to proste rozwiązanie, które jest w użyciu "-fx-background: rgb (80,80,80);", czyli

scrollPane.setStyle("-fx-background: rgb(80,80,80);"); 

Przynajmniej to działa idealnie dla mnie , podczas gdy "-fx-background-color: rgb (80,80,80);" lub "-fx-control-inner-background: rgb (80,80,80);" nie działają w javafx 8. "-fx-background-color: rgb (80,80,80);" działał we wcześniejszych wersjach javafx.

19

W obecnej wersji JavaFX 8, można użyć klasy stylu krawędzi do krawędzi, aby usunąć obramowanie w całości:

<ScrollPane styleClass="edge-to-edge"/> 
+2

Bardzo ładne znalezisko. Nie jest to udokumentowane w [JavaFX CSS reference] (https://docs.oracle.com/javase/8/javafx/api/javafx/scene/doc-files/cssref.html#scrollpane), ale jest częścią domyślny arkusz stylów 'modena.css' dla JavaFX 8. – jewelsea

7

próbie użycia tego pierwszego

.scroll-pane > .viewport { 
    -fx-background-color: transparent; 
} 

przed ustawieniem kolor tła

+0

Chociaż wyższe głosowane rozwiązania nie działały dla mnie, ten zrobił to! – gbmhunter