¿Cómo puedo configurar la imagen de fondo de una escena?
Uno de los enfoques puede ser así:
1) Cree un archivo CSS con el nombre “style.css” y defina un selector de id. En él:
#pane{ -fx-background-image: url("background_image.jpg"); -fx-background-repeat: stretch; -fx-background-size: 900 506; -fx-background-position: center center; -fx-effect: dropshadow(three-pass-box, black, 30, 0.5, 0, 0); }
2) Establezca el ID del control más alto (o cualquier control) en la escena con el valor definido en CSS y cargue este archivo CSS en la escena:
public class Test extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { StackPane root = new StackPane(); root.setId("pane"); Scene scene = new Scene(root, 300, 250); scene.getStylesheets().addAll(this.getClass().getResource("style.css").toExternalForm()); primaryStage.setScene(scene); primaryStage.show(); } }
También puede dar una identificación al control en un archivo FXML:
Para obtener más información sobre JavaFX CSS Styling, consulte esta guía .
Sé que esta es una pregunta antigua
Pero en caso de que quiera hacerlo programáticamente o en la forma de Java
Para fondos de imágenes; puedes usar la clase BackgroundImage
BackgroundImage myBI= new BackgroundImage(new Image("my url",32,32,false,true), BackgroundRepeat.REPEAT, BackgroundRepeat.NO_REPEAT, BackgroundPosition.DEFAULT, BackgroundSize.DEFAULT); //then you set to your node myContainer.setBackground(new Background(myBI));
Para Paint o Fill Backgrounds; puedes usar la clase BackgroundFill
BackgroundFill myBF = new BackgroundFill(Color.BLUEVIOLET, new CornerRadii(1), new Insets(0.0,0.0,0.0,0.0));// or null for the padding //then you set to your node or container or layout myContainer.setBackground(new Background(myBF));
Mantiene viva tu java y tu css muerta.
Puedes cambiar el estilo directamente para la escena usando la clase .root
:
.root { -fx-background-image: url("http://sofes.miximages.com/javafx/logo3w.png"); }
Agregue esto a CSS y cárguelo como “Uluk Biy” descrito en su respuesta.