JavaFX Bild in ein Rectangle oder in eine Scene einfügen?

2 Antworten

Das müsste transparent sein, also wenn es auf dem desktop ist, sehe ich nur das gelbe 

siehst? das ist transparent - (Computer, PC, Software)

Die Scene kann kein Hintergrundbild haben, du benötigst eine Root-Komponente wie z.B.: AnchorPane.


Wo muss das Bild sein?

Ist egal. Du musst es nur in der Pfadangabe berücksichtigen. Userdesktop wäre z.b. : C:\Users\<benutzername>\Desktop

Für den einfachsten Fall kannst du die Bilder in den selben Ordner kopieren wie deine Klasse. 

Rectangle sowie AnchorPane und die meisten anderen FX-UI Elemente erben allesamt von Node. Diese Klasse stellt die Methode: setStyle(); zur Verfügung.

entsprechend würde das setzen des Hintergrundbildes so aussehen:

AnchorPane root = new AnchorPane();
String image = getClass().getResource("Hintergrund.png").toExternalForm();
root.setStyle("-fx-background-image: url('" + image + "'); " + "-fx-background-position: center center; + "-fx-background-repeat: stretch;");


Alternativ kannst du auch direkt eine CSS Datei verwenden.



gut4fr5g4 
Beitragsersteller
 20.07.2016, 09:49

Und was machen die jeweiligen "Befehle"?

0
KnusperPudding  20.07.2016, 10:40
@gut4fr5g4

was machen "center", "stretch" etc.?

Siehe JavafX CSS Dokumentation:

https://docs.oracle.com/javase/8/javafx/api/javafx/scene/doc-files/cssref.html

Das funktioniert irgendwie nicht, ich kriege eine Nullpointer-Exception.

Weil du auf Dateien außerhalb deines Projekts referenzierst. Exakt wie in meinem Beispiel funktioniert es, wenn das Bild im selben Ordner wie die Klasse ist.

Wenn du auf den Desktop referenzierst, versuch es so:

-fx-background-image: url('file:///C:/Users/MEINNAME/Desktop/pacman_background.png')
0
gut4fr5g4 
Beitragsersteller
 20.07.2016, 11:24
@KnusperPudding

Vielen Dank! 

Wenn ich das Projekt zu einer .jar mache, sind dann die PNGs auch in der .jar?

0
KnusperPudding  20.07.2016, 11:43
@gut4fr5g4

Nicht wenn die Datei bei dir auf dem Desktop liegt. Nur innerhalb deines Projekts.

Hierbei bedenke: 

Dateien innerhalb eines Projekts werden als Ressource angesprochen. Da diese als .jar keinen Dateipfad mehr haben.

0
gut4fr5g4 
Beitragsersteller
 20.07.2016, 13:04
@gut4fr5g4
-fx-background-image: url('file:///C:/Users/MEINNAME/Desktop/pacman_background.png')

Funktioniert bei mir irgendwie nicht bei Rectangles. :/

0
gut4fr5g4 
Beitragsersteller
 20.07.2016, 13:52
@KnusperPudding

Schreibe ich dann in die ersten Klammern einfach den Pfad, wie beim Hintergrund?

0
gut4fr5g4 
Beitragsersteller
 20.07.2016, 14:13
@KnusperPudding

Habe ein transparentes Bild, aber will ein Rectangle machen, dem ein transparentes Bild zugewiesen wird, das dann über dem hintergrund zu sehen ist, wie mach ich das? weil bei mir ist das, was am bild durchsichtig sein sollte, weiß

0
KnusperPudding  20.07.2016, 14:24
@gut4fr5g4

Dann ist dein Bild vermutlich nicht Transparent, sondern weiß im Hintergrund. 

Mit diversen Bildbearbeitungsprogrammen kann man das überprüfen und korrigieren.

0
KnusperPudding  20.07.2016, 15:11
@gut4fr5g4

Stimmt, das ist Transparent. Allerdings wenn ich das in den Code einbinde, ist es immer noch transparent. und funktioniert wie erwartet.

0
KnusperPudding  20.07.2016, 15:52
@gut4fr5g4

Du packst den Hintergrund samt dem Rest in eine Group. Daher wird da auch nichts transparent. 

Nim einfach ein Panel darüber. z.B. ein AnchorPane. Setze hier den Background und füge deine VBox als Child an.

0