BackgroundImage backgroundImage = new BackgroundImage(new Image("File:src\\main\\resources\\aut\\heinz\\DevilsBoard.jpg", 1280, 960, false, true),
BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT, BackgroundPosition.DEFAULT,
BackgroundSize.DEFAULT);
pane.setBackground(new Background(backgroundImage));
new Image(getClass().getResourceAsStream("/aut/heinz/DevilsBoard.jpg"))
new Image(getClass().getResource("/aut/heinz/DevilsBoard.jpg").toString())
Ich bekomme mit beiden Varianten beim Start der .exe die Meldung "Failed to launch JVM".Jetzt müssen wir nur noch schauen, was Image so für Konstruktoren hat:
und da gibt es gleich zwei, die passen würden:Image (JavaFX 21)
declaration: module: javafx.graphics, package: javafx.scene.image, class: Imageopenjfx.io
a) InputStream - also können wir uns einfach einen Stream zu der Ressource geben lassen. Das wäre denn etwas wie:
new Image(getClass().getResourceAsStream("/aut/heinz/DevilsBoard.jpg"))
b) URL als String. Eine URL bekommen wir von getResource und da es als String gegeben werden soll, brauchen wir noch toString():
new Image(getClass().getResource("/aut/heinz/DevilsBoard.jpg").toString())
Das sollte funktionieren (So Du in einer Instanzmethode bist. Sollte es eine (statische) Klassenmethode sein, dann kannst Du statt getClass() einfach YourClassName.class einsetzen.) wobei Code nur rein im Forum geschrieben wurde - ggf. kann sich ein Tippfehler eingeschlichen haben.
public class JavaFXApp extends Application {
Pane pane = new Pane(); //NEU
@Override
public void start(Stage primaryStage) {
pane.setPrefSize(1280, 960);
// JPG-Bild laden und Hintergrundbild einstellen
Image image = new Image(getClass().getResource("/aut/heinz/DevilsBoard.jpg").toString());
//Image image = new Image(getClass().getResourceAsStream("/aut/heinz/DevilsBoard.jpg"));
BackgroundImage backgroundImage = new BackgroundImage(image,
BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT, BackgroundPosition.DEFAULT,
BackgroundSize.DEFAULT);
pane.setBackground(new Background(backgroundImage));
pane.setOnMouseClicked(this::handleMouseClick);
primaryStage.setTitle("Hello World!");
Scene scene = new Scene(pane); //NEU
primaryStage.setScene(scene); //NEU
primaryStage.show();
// Spielfeld erstellen
GameBoard gb = new GameBoard(pane);
} // end start