Come posso impostare l'immagine di sfondo di una scena?JavaFX Come impostare un'immagine di sfondo scena
risposta
Uno degli approcci può essere simile a questo:
1) Creare un file CSS con il nome "style.css" e definire un selettore id in essa:
#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) Imposta l'id del controllo più alto (o qualsiasi controllo) nella scena con valore definito in CSS e carica questo file CSS nella scena:
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();
}
}
Si può anche dare un id al controllo in un file FXML:
<StackPane id="pane" prefHeight="200" prefWidth="320" xmlns:fx="http://javafx.com/fxml" fx:controller="demo.Sample">
<children>
</children>
</StackPane>
Per ulteriori informazioni su JavaFX CSS Styling si riferiscono a questo guide.
È possibile modificare lo stile direttamente scena utilizzando .root
classe:
.root {
-fx-background-image: url("https://www.google.com/images/srpr/logo3w.png");
}
aggiungere questo al CSS e caricarlo come "Uluk Biy" descritto nella sua risposta.
Oops! Come posso fare in modo che l'immagine riempia l'intera scena? Lascia gli spazi bianchi a sinistra e in alto. – John
'-fx-background-repeat: stretch; ' –
Sta ancora lasciando spazio. La radice della scena è una GridPane e sto centrando griglia sulla scena. Come posso evitare che l'immagine di sfondo sia centrata? – John
So che questa è una vecchia questione
Ma nel caso in cui si vuole fare a livello di codice o il modo in java
Per Gli Sfondi immagine; è possibile utilizzare BackgroundImage classe
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));
Per Paint o Riempire Sfondi; è possibile utilizzare BackgroundFill classe
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 il vostro java vivo & & tuo css morti ..
ho posto un'altra domanda in precedenza si prega di aiutare collegamento qui http://stackoverflow.com/questions/9736393/javafx-2 -not-resizing-ui-control-based-on-window-size – John
posso cambiare lo sfondo della scena da un'altra funzione, oltre all'avvio nullo – Ossama
@Ossama sì è possibile. Definire due diversi selettori CSS (con due diverse proiezioni di background) e in qualche modo cambiare l'id del nodo con quello desiderato. –