JavaFX Bild einfügen

Hallo,

Vorerst muss ich sagen das ich ein totaler Anfänger im Java und somit auch im JavaFx Bereich bin, was ihr wahrscheinlich aber auch an meiner Frage bemerken werdet.

Ich habe mir zum üben ein paar leichte Aufgaben vorgenommen zum einen ein Hintergrundbild und zum anderen ein normales Bild.

Das mit dem Hintergrund ging via CSS ja ganz einfach:

Code:
.root{
   -fx-background-image: url('hintergrund-4.png');
   -fx-background-repeat: repeat-y repeat-x;   
   -fx-background-position: center center;
}

Nur das normale Bild bekomme ich einfach nicht hin :/

Die Zeile habe ich schnell gefunden

Code:
Image image1 = new Image("flower.png", true);

aber so bekomme ich nur Fehler ausgegeben, dann dachte ich man muss es so machen wie auch beim .buttom und es einem children zuordnen doch auch das funktionierte nicht.

Code:
root.getChildren().add(image1);

Kann mir da jemand weiterhelfen ?

Gruß
 

dzim

Top Contributor
Image-Objekte sind keine Nodes und somit nicht einem Pane (hier dein "root"-Element) zuzuordnen. Dazu musst du es in einen ImageView wrappen: ImageView (JavaFX 2.2)

Savvy?

PS: Ich geb dir den gutgemeinten Tipp... Leis dich ordentlich in Java-Ein. Ich möchte hier nur ungern Anfängerfragen klären (dazu gibt es gier - auf java-forum.org - einen separaten Thread). Ok?

PPS: Du kannst JavaFX-UIs komplett im Code erstellen, aber ich empfehle dir - wenn du die Basics erst einmal verstanden hast und dich vielleicht auch schon mal etwas mit XML beschäftigt hast, die interne deklarative von JavaFX "FXML" anzuschauen (oder noch besser den SceneBuilder - das Tool von Oracle, mit dem die meisten FXMLs erstellen dürften).
Aber wie gesagt: Lerne erst, wie man Java entwickelt, dann, wie die JavaFX-API aufgebaut ist und angewendet wird, mach einen Ausflug in XML und erst dann schau dir das an, sonst wird es vielleicht etwas viel auf einmal und wirkt auf dich nur demotivierend. Ok?

#edit: Welche IDE verwendest du? Denn eigentlich hätte dir jede IDE schon zu dem Zeitpunkt, an dem du den Code schreibst sagen können, das ein Image nicht als Child an "root" angehängt werden kann.
Mach es nicht mit Editoren, das ist bei Java eher unnötig mühsam...
 
Zuletzt bearbeitet:
Ja, kann ich ja verstehen das ihr nicht meine Lehrer seit und mir bei den ganzen Anfängerfragen helfen wollt.

Nur ich habe nach diesem "Problem" stundenlang gesucht und keine Lösung gefunden und da dacht ich mir fragste mal nach :oops: .

Letztendlich habe ich es dann doch zum Teil hinbekommen:

Code:
        Image img = new Image("http://mikecann.co.uk/wp- content/uploads/2009/12/javafx_logo_color_1.jpg");
        ImageView imgView = new ImageView(img);
        StackPane root = new StackPane();
        root.getChildren().add(imgView);

Nur leider Funktioniert es nur mir einer URL des Bildes obwohl der Pfad genau stimmt, da sich das Bild mit exakt den gleichem Namen sowie Dateiendung im selben Verzeichnis wie die .java Datei befinden.

Image img = new Image("flower.png");

Aber Naja so Funktioniert es auch ;).

Vielen Dank soweit für die Tipps und die Hilfe.

Gruß
 

dzim

Top Contributor
Erspar dir künftig das stundenlange Suchen und verwende die offizielle JavaDoc - die Quellcodedokumentation. Beschäftige dich vielleicht noch ein wenig mit Vererbung, Interfaces und so weiter. Bsp.: Das StackPane kann als children nur "Node"-Objekte aufnehmen. Der ImageView (siehe den Link, den ich vorhin gesendet habe), erbt von direkt von Node. Sprich: Er besitzt alle Eigenschaften, die ein Node besitzt und (i.d.R.) noch ein paar mehr. Alle Objekte erben immer von der Klasse "Object" (das ist quasi Gesetz).

Zu deinem Pfad: Du verwendest hat einen relativen Pfad, sprich "flower.png" == "./flower.png" und wird hier im konkreten Fall des Konstruktors der Klasse Image immer relativ vom Pfad der Klasse geladen, von der du es aufrufst.
Wenn du also im Package "eu.test.img" deine PNGs hast, und im Package "eu.test.ui" die Klasse Main hättest, von der aus du ein Image verwenden möchtest, wäre der Kontruktor new Image("../img/flower.png") zu verwenden. Wenn du einen relativen Pfad explizit von einer bestimmten Klasse aus aufrufen möchtest, kannst du auch den Konstruktor der einen InputStream verwendet aufrufen, indem du new Image(Main.class.getResourceAsStream("../img/flower.png")) oder new Image(Main.class.getResource("../img/flower.png").openStream()) aufrufst. Damit bist du meist flexibler, geht aber immer davon aus, das die Bilder im Classpath, also zum Beispiel in einem Package, enthalten sind.

#edit: BTW: eine gültige URL ist natürlich auch "file:///home/user/img/flower.png" (*nix-Systeme) / "file://localhost/c:/img/flower.png" (Windoof) (siehe hier: file URI scheme - Wikipedia, the free encyclopedia)
 
Zuletzt bearbeitet:
Jetzt funktioniert es auch mit dem normalen Pfad also ohne HTTP URL deine Beschreibung hat mich an den Pfad erinnert den ich auch bei der CSS Datei verwendet haben.

Code:
Image img = new Image (JavaFXBildaufHintergrund.class.getResource("flower.png").toExternalForm());

Wieso steht dann aber in der Oracle Dokumentation dieses Beispiel ?

Code:
// The image is located in default package of the classpath
Image image1 = new Image("/flower.png", true);

Mein Bild ist doch auch im gleichen Package wie die .java Datei aber damit funktioniert es nicht ;/

Gruß
 

dzim

Top Contributor
Sobald du vorne mit dem Forward-Slash "/" beginnst, wird hier vom root-Eintrag deines Classpath losgesucht. Beispiel (angenommen, deine Bilder sind im package "eu.test.img" und du hast eine Klasse im selben package): "./flower.png" == "/eu/test/img/flower.png". Das erste ist also deutlich kürzer, das zweite deutlich präziser (von der konkreten Beschreibung her, wo sich dein Bild nun befindet).

#edit: eine Suche bei Google nach "access resources classpath" bring vielleicht noch einige brauchbare Hinweise
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
Hatsi09 Swing JPanel Bild einfügen AWT, Swing, JavaFX & SWT 14
T JFrame Bild einfügen AWT, Swing, JavaFX & SWT 9
P Jframe Bild einfügen, Hintergrund Farbe ändern, und Button schrift Größe ändern AWT, Swing, JavaFX & SWT 2
M Bild in JPanel mit Maus einfügen AWT, Swing, JavaFX & SWT 0
S Ein externes Bild in ein JFrame einfügen AWT, Swing, JavaFX & SWT 8
P Bild DIREKT in JFrame einfügen AWT, Swing, JavaFX & SWT 8
D Bild in JLabel einfügen AWT, Swing, JavaFX & SWT 15
E Swing Wieder ein Bild einfügen AWT, Swing, JavaFX & SWT 2
M Probleme beim Bild einfügen in CenterPanel AWT, Swing, JavaFX & SWT 5
N im fenster ein hintergrund bild einfügen AWT, Swing, JavaFX & SWT 18
A Swing Bild in runnable jar einfügen AWT, Swing, JavaFX & SWT 25
I Probleme mit Bild einfügen AWT, Swing, JavaFX & SWT 5
P Bild in JPanel einfügen funktioniert nicht AWT, Swing, JavaFX & SWT 7
Y Bild in JFrame einfügen AWT, Swing, JavaFX & SWT 5
D Bild einfügen AWT, Swing, JavaFX & SWT 2
M Ganz normales Bild einfügen AWT, Swing, JavaFX & SWT 6
L Bild einfügen AWT, Swing, JavaFX & SWT 7
G Bild in FormSheet einfügen. Wie? AWT, Swing, JavaFX & SWT 3
S AWT: Bild einfügen AWT, Swing, JavaFX & SWT 3
G Bild in JFrame einfügen AWT, Swing, JavaFX & SWT 4
G Bild in JButton einfügen AWT, Swing, JavaFX & SWT 7
H Bild in Frame einfügen AWT, Swing, JavaFX & SWT 2
M JavaFX Mandelbrot-bild noch nicht optimiert AWT, Swing, JavaFX & SWT 7
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
frager2345 Bild aus Dateien lesen und als Hintergrund verwenden AWT, Swing, JavaFX & SWT 2
T Bild in ein graphics füllen AWT, Swing, JavaFX & SWT 2
N imageIcon zeigt kein Bild an AWT, Swing, JavaFX & SWT 5
B Bild lädt nicht AWT, Swing, JavaFX & SWT 2
izoards Bild ausdrucken - PageFormat setzen geht nicht AWT, Swing, JavaFX & SWT 5
M Bild wird nicht geladen obwohl sie gefunden wird AWT, Swing, JavaFX & SWT 0
V JavaFX Bild leer und keine Fehlermeldung AWT, Swing, JavaFX & SWT 21
D JavaFX Bearbeitetes Bild wird nicht gespeichert AWT, Swing, JavaFX & SWT 9
D JavaFX Größe des Bild an ImageView anpassen AWT, Swing, JavaFX & SWT 3
M Bewegtes Bild im BorderLayout.CENTER AWT, Swing, JavaFX & SWT 6
C Falschfarbenbild (lineare Grauwertspreizung)aus Grauwert-Bild erstellen AWT, Swing, JavaFX & SWT 15
C Kleineres Bild an bestimmte Koordinaten setzen AWT, Swing, JavaFX & SWT 6
S Bild neu skalieren - Bild in Bild speichern? AWT, Swing, JavaFX & SWT 6
N Bild Drehen AWT, Swing, JavaFX & SWT 1
J Bild von anderer Klasse will nicht laden AWT, Swing, JavaFX & SWT 1
M JavaFX Bild zur ImageView in einem Kreis anzeigen. AWT, Swing, JavaFX & SWT 4
M Combobox bild anklicken AWT, Swing, JavaFX & SWT 2
cool_brivk24 Swing ImageIcon lädt kein Bild AWT, Swing, JavaFX & SWT 12
L Bild nicht in der Mitte AWT, Swing, JavaFX & SWT 16
B JavaFX Bild um die eigene Achse drehen lassen AWT, Swing, JavaFX & SWT 0
J Swing Bild in Button AWT, Swing, JavaFX & SWT 11
I Bild über FXML (ImageView, Image) anzeigen AWT, Swing, JavaFX & SWT 1
T Image Loader lädt Bild nicht AWT, Swing, JavaFX & SWT 10
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
P Kein Bild wird angezeigt bei ImageIcon AWT, Swing, JavaFX & SWT 16
T JavaFX Bild in Tabellenzelle AWT, Swing, JavaFX & SWT 2
Ksanatos Swing Bild (.jpg) einlesen und per Button wechseln AWT, Swing, JavaFX & SWT 9
S JPanel rotieren, Bild ist abgeschnitten, Clipping? AWT, Swing, JavaFX & SWT 0
MaxG. Swing Bild Button AWT, Swing, JavaFX & SWT 7
P Swing Bild Skallieren AWT, Swing, JavaFX & SWT 1
A Swing Bild wird nicht mehr geladen AWT, Swing, JavaFX & SWT 4
A Swing Gemaltes Bild über saveDialog speichern unter AWT, Swing, JavaFX & SWT 15
R 2D-Grafik PNG Bild per Graphics auf JPanel AWT, Swing, JavaFX & SWT 9
S Bild mit ImageIcon auf GUI verkleinern AWT, Swing, JavaFX & SWT 3
T AWT Farben in einem Bild ändern AWT, Swing, JavaFX & SWT 8
I JFrame Bild strecken und auf Bildschirmgröße anpassen AWT, Swing, JavaFX & SWT 2
F Gezeichnetes als bild speichern AWT, Swing, JavaFX & SWT 4
B 2D-Grafik Bild farblich filtern AWT, Swing, JavaFX & SWT 2
B JavaFX ImageView neues Bild zuweisen AWT, Swing, JavaFX & SWT 19
A 2D-Grafik Bild wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 24
K Bild in JFrame AWT, Swing, JavaFX & SWT 2
S JavaFX Teil eines Bildes ausschneiden / als neues Bild nutzen AWT, Swing, JavaFX & SWT 8
B Swing Unterteiltes JFrame mit Bild in der Mitte AWT, Swing, JavaFX & SWT 4
I Applet BlueJ Applet - Bild mit if-Schleife zeichnen lassen AWT, Swing, JavaFX & SWT 16
Z Bildervorschau, MouseDragged das Bild verschieben AWT, Swing, JavaFX & SWT 1
M JavaFX Ein Bild ohne Rahmen fällt runter? AWT, Swing, JavaFX & SWT 2
G Anonyme Instanz von JXImageView erstellen und mit Bild initialisieren AWT, Swing, JavaFX & SWT 7
A JPanel Bild laden (Porblem mit Dateipfad) AWT, Swing, JavaFX & SWT 2
M JavaFX - Bild in Jar einbinden, sodass es auch außerhalb der IDE geladen wird. AWT, Swing, JavaFX & SWT 2
M Bild Beschreibung mit ImageIO speichern AWT, Swing, JavaFX & SWT 1
M "ImageIO.read()" liest Bild nicht richtig ein AWT, Swing, JavaFX & SWT 3
I Swing JLabel Bild für 1sec anzeigen lassen AWT, Swing, JavaFX & SWT 13
K Bild in Label wird nicht angezeigt AWT, Swing, JavaFX & SWT 5
C GUI öfters durchlaufen und hinterher Bild speichern AWT, Swing, JavaFX & SWT 1
M AWT Farben in Bild ersetzen AWT, Swing, JavaFX & SWT 11
G paintComponents zerstückelt Bild AWT, Swing, JavaFX & SWT 0
C 2D Grafik ein Bild soll permanent durchlaufen AWT, Swing, JavaFX & SWT 2
1 Textfield: jede Buchstabe ein Bild AWT, Swing, JavaFX & SWT 2
C Bild Koordinaten AWT, Swing, JavaFX & SWT 6
M Bild aus JLabel resizen und speichern AWT, Swing, JavaFX & SWT 0
B JPanel und png-Bild AWT, Swing, JavaFX & SWT 2
B Swing Bild von Webseite herunterladen, diese dann in JList anzeigen. AWT, Swing, JavaFX & SWT 1
O 2D-Grafik Bild abgeschnitten nach Rotation mit Affine Transform und Hintergrund Schwarz AWT, Swing, JavaFX & SWT 8
A Swing Malprogramm Bild speichern? AWT, Swing, JavaFX & SWT 9
U Bild innerhalb hatml code anzeigen AWT, Swing, JavaFX & SWT 5
Y JavaFX Bild speichern und Pfad dazu abspeichern AWT, Swing, JavaFX & SWT 2
S Geladenes Bild wird nicht in JPanel angezeigt AWT, Swing, JavaFX & SWT 7
L 2D-Grafik Bild in Richtung Maus drehen AWT, Swing, JavaFX & SWT 18
C Bild in JFrame AWT, Swing, JavaFX & SWT 8
T AWT Bild laden und transparent zeichnen AWT, Swing, JavaFX & SWT 2
I SWT Bilder, bzw. ein einzelnes Bild AWT, Swing, JavaFX & SWT 6
L JavaFX: Bild in Image einlesen AWT, Swing, JavaFX & SWT 11
T Mit getSubimage ruckelt das Bild AWT, Swing, JavaFX & SWT 7
T Bild drehen ohne Resize AWT, Swing, JavaFX & SWT 3
A Bild in JLabel skalieren AWT, Swing, JavaFX & SWT 4
A Bild über Imageviewer auf GUI anzeigen AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen


Oben