2013-07-09 7 views
9

Ich habe ein Problem in Bezug auf den Standardhintergrund und den Rahmen des ScrollPane. Mit diesem Stil wurde das Problem deutlicher sichtbar.JavaFX ScrollPane Rahmen und Hintergrund

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

Image show the background and the border

Ich habe diese Art versucht und bekam kein Glück nur die rote Grenze gegangen und ließ mich mit dem blauen.

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

Ich habe in dieser alten Post sehe JavaFX Hide ScrollPane gray border und http://docs.oracle.com/javafx/2/ui_controls/editor.htm

Diese Codezeile nicht weder

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

Dank

+0

In JavaFX 8 mit dem neuen Standardthema können ScrollPane-Hintergrundfarben schwierig einzustellen sein. Für diese Fälle siehe http: // stackoverflow.com/questions/22952531/scrollpanes-in-javafx-8-immer-haben-grau-hintergrund –

Antwort

15

Ich habe nicht funktioniert fand eine Lösung und würde gerne posten es hier, damit andere nicht ihre Zeit verschwenden müssen, um es wieder zu finden.

Mit Blick auf die Standard-CSS von JavaFx (caspian.css), die mit diesem Befehl aus der Bibliothek extrahiert wurde.

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

Ich konnte sehen, dass das, was ich verpasst ist

-fx-padding: 0; 

Also das die CSS-Klasse ist ich verwende.

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

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

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

Sie können:

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

Wenn Sie nur -fx-background-color eingestellt, sehen Sie die Farbänderung nur die ScrollPane Innenkanten aufgebracht wird, und die Farbe des Bereichs Mitte ist immer noch nicht geändert .

Die Eigenschaft -fx-control-inner-background ändert die Farbe dieses mittleren Bereichs.

7

Es scheint eine einfache Lösung zu sein, die zu benutzen ist "-fx-Hintergrund: rgb (80,80,80);", das heißt,

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

Wenigstens das funktioniert für mich perfekt , während "-fx-Hintergrundfarbe: rgb (80,80,80);" oder "-fx-control-inner-background: rgb (80,80,80);" arbeite nicht in javafx 8. "-fx-background-color: rgb (80,80,80);" funktionierte in früheren Versionen von javafx.

19

In der aktuellen Version von JavaFX 8 können Sie den Rand-zu-Rand-Stil-Klasse die Grenze vollständig zu entfernen:

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

Sehr schöne finden. Es ist nicht in der [JavaFX CSS Referenz] dokumentiert (https://docs.oracle.com/javase/doc-files/cssref.html#scrollpane), aber es ist Teil von das Standard-Stylesheet 'modena.css' für JavaFX 8. – jewelsea

7

Try Verwendung dieses erste

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

der Vor dem Einstellen Hintergrundfarbe

+0

Während die höher gewählten Lösungen für mich nicht funktionierten, hat diese Version funktioniert! – gbmhunter