2016-06-03 18 views
0

Der Titel sagt alles, glaube ich.Wie setze ich ein Bild in JavaFX auf einen Szenenhintergrund?

Wie ein .jpg (oder ein anderes unterstütztes Bildformat) Bild auf eine Szene Hintergrund setzen?

ich etwas erreicht dies durch eine HBox Verwendung eines Image und eine ImageView, wie folgt aus:

String url = ... 
HBox box= new HBox(); 
Image x = new Image(url); 
ImageView iv = new ImageView(x); 
box.getChildren().add(iv); 
box.setVisible(true); 

Dann habe ich, dass das Feld in die Szene zuerst, und alles andere danach.

Ich bin nicht über dieses Stück Code beschweren - es funktioniert meine Zwecke zu - aber ist es ein richtiger Weg, um einen Hintergrund zu setzen?

Antwort

3

Rufen Sie einfach setBackground auf dem Wurzelknoten der Szene. Zum Beispiel:

Pane root = ... ; // probably some pane subclass... 
String url = ... ; 
Image img = new Image(url); 
BackgroundImage bgImg = new BackgroundImage(img, 
    BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT, 
    BackgroundPosition.DEFAULT, 
    new BackgroundSize(BackgroundSize.AUTO, BackgroundSize.AUTO, false, false, true, false)); 

// put stuff in root as normal.... 

Scene scene = new Scene(root); 

die Javadocs für die Parameter finden Sie für den BackgroundImage Konstruktor usw.

+0

Die Sache ist, meine Wurzel war eine 'Gruppe', keine Unterklasse. Es ist Elternklasse ist nicht "Region" (lustig genug, es ist "Eltern"). Daher hat es keine 'setBackground' Methode. Um diese Sache herum also? Wurzelknoten muss eine Unterklasse von 'Region' sein? – Marebre8

+1

Kannst du es nicht einfach als "Pane" ändern? Würden sich 'Group' und' Pane' nicht identisch verhalten, wenn sie die Wurzel der Szene sind ...? –

+1

Beachten Sie auch, dass, wenn Sie ein Fenster anstatt eine Gruppe für Ihre Szene Wurzel verwenden Sie wählen, dann die [Styling des Hintergrund] (https://docs.oracle.com/javase/8/javafx/api/ javafx/Szene/doc-files/cssref.html # Region) für diese Scheibe kann aus dem Code in einen CSS-Stylesheet externalisiert werden (wenn Sie möchten). – jewelsea

3

Ein ImagePattern kann als fill des Scene verwendet werden:

ImagePattern pattern = new ImagePattern(myImage); 
scene.setFill(pattern); 
Verwandte Themen