Bilder in jFrame einfügen

F

FranzFerdinand

Gast
Hallihallöle,

ich beschäftige mich gerade mit graphischen Oberflächen in Java, mein absoluter Erzfeind, da ich eigentlich sonst immer ohne Oberfläche mit Konsole arbeite.

Es scheitert nun leider am Einfügen von Bildern.

Also, ich habe ein JFrame, in welches ich Elemente einfügen möchte.
So sieht es aus:
Java:
package spiel;

import java.awt.Container;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.WindowConstants;

public class CafeMain extends JFrame{
	
	protected static String spielname = "Café International";
	
	public CafeMain() {
		super(spielname);
		int frameWidth = 600;
	    int frameHeight = 600;
	    setSize(frameWidth, frameHeight);
	    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
	    int x = (d.width - getSize().width) / 2;
	    int y = (d.height - getSize().height) / 2;
	    setLocation(x, y);
	    setResizable(false);
	    setLocationRelativeTo(null);
	    Container cp = getContentPane();
	    cp.setLayout(null);
	    setVisible(true);
	    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	}

	public static void main(String[] args) {
		new CafeMain();
	}

}

Ein ganz normaler JFrame mit 600 mal 600 Pixel Größe.

Ich würde nun gerne ein einfaches Bild einfügen, welches im Verzeichnis liegt.
Hierbei ist zu beachten, es handelt sich um ein Kartenspiel mit den Eigenschaften Farbe und Zahl.
Ergo liegen im Verzeichnis zahlreiche Bilder herum nach folgendem Format:
Code:
karte_KARO_7.jpg
karte_HERZ_2.jpg
karte_KREUZ_B.jpg //B wie Bube

Ich habe eine Klasse Spielkarte, in welcher diese Eigenschaften abgespeichert sind.
eine neue Spielkarte wird mit
Java:
new Spielkarte();
generiert.
Die Eigenschaften der Spielkarte kann man ganz leicht mit gettern ablesen.
Also beispielsweise so:
Java:
karte1.getFarbe();
karte7.getNummer();

Die Kartendateien liegen alle in demselben Verzeichnis wie die Hauptklasse.
Ich würde nun gerne abhängig von dieser Eigenschaft, die dort gegeben ist wissen, wie ich die Spielkartendatei bestimme und diese in den JFrame einfüge.

Beispielsweise an der Stelle:
Java:
setBounds(20,20,60,200);

Vielen Dank und liebe Grüße
Lukas :)
 

Foxei

Bekanntes Mitglied
Hallo Lukas,
Also ich löse so etwas mit einer Resources Klasse die alle Bilder beinhaltet. So kannst du im späteren Verlauf die Bilder ganz einfach mit Resources.getImage("bild.png"); aufrufen.
Resources
Java:
package de.vg.simonschaefer.resources;

import java.awt.Image;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;

import javax.imageio.ImageIO;
import javax.swing.SwingUtilities;

import de.vg.simonschaefer.Debug;
import de.vg.simonschaefer.Main;
import de.vg.simonschaefer.gui.VFrame;

public class Resources {
	private static HashMap<String, Object> resources = new HashMap<String, Object>();
	public Resources(){
		Debug.Log("Load Resources");
		new Thread(new Runnable() {
			@Override
			public void run() {
				File file=new File("./resources/img");
				for(File f:file.listFiles()){
					if(f.getName().endsWith(".png"))
						loadImage(f.getName());
				}
				SwingUtilities.invokeLater(new Runnable() {
					
					@Override
					public void run() {
						//Frame starten
					}
				});
			}
		}).start();
	}
	
	private void loadImage(String filePath){
		File file = new File("./resources/img/"+filePath);
		Image img;
		if(file.exists()){
			try {
				img=ImageIO.read(file);
				resources.put(filePath, img);
				Debug.Log("Image \""+filePath+"\" successful created ");
				
			} catch (IOException e) {
				Debug.Err("Image \""+filePath+"\" error while create \nCaused by: "+e.getCause());
			}
		}else{
			Debug.Err("Image \""+filePath+"\" error while create \nCaused by: Resources-File not exist");
		}
	}
	
	public static Image getImage(String name){
		if(resources.containsKey(name)){
			try{
				Image img =(Image)resources.get(name);
				return img;
			}catch(Exception e){
				Debug.Err("Image \""+name+"\" error while loading \nCaused by: Resources is not a Image");
				return null;
			}
		}else{
			Debug.Err("Image \""+name+"\" error while loading \nCaused by: Resources not found");
			return null;
		}
			
	}
}

Um ein Bild auf eine JComponent zu zeichnen musst du ganz einfach die paintComponent überschreiben. z.b. schreibst du einen JCompoent dem du via Setter ein Bild zuweist und dann diese auf die gesamt Größe des Component streckst. Dieser Compoennt verhält sich dan genauso wie jedes JLabel o.a JComponenten.
SpielkartenComponent
Java:
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;

import javax.swing.JComponent;


public class SpielkartenComponent extends JComponent{
	private Image img;
	public SpielkartenComponent(Image img) {
		this.img=img;
	}
	@Override
	protected void paintComponent(Graphics g) {
		if(getImg()!=null){
			Graphics2D g2d=(Graphics2D) g;
			g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
			g2d.drawImage(getImg(), 0, 0, getWidth(),getHeight(),this);
		}
	}
	public Image getImg() {
		return img;
	}
	public void setImg(Image img) {
		this.img = img;
	}
}
 
F

FranzFerdinand

Gast
Hallöle und vielen Dank für Deine nette Antwort,

scheint mir sehr umfangreich und wissend. Leider ist bei mir gerade der Punkt erreicht, wo ich das nur ein wenig mit einem "Hä" quittieren kann.
ich kann das gerade überhaupt nicht nachvollziehen, dafür reicht mein Javaverständnis wohl einfach nicht aus.

Könntest Du mir bitte noch einmal langsam und für einen Laien erklären, wie ich daraus jetzt ein Bild erstelle?


Vielen Dank :)
Lukas
 

Foxei

Bekanntes Mitglied
Zu tippen wie das alles Funktioniert wäre etwas lang ich bin aber bereit dir alles in Skype zu erklären :) foxei1996
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Bilder bei einem JFrame einfügen AWT, Swing, JavaFX & SWT 4
A Swing Bilder in JFrame einfügen AWT, Swing, JavaFX & SWT 2
vodkaz JFrame,Bilder und Zeitverzögerung AWT, Swing, JavaFX & SWT 2
E Bilder auf JFrame AWT, Swing, JavaFX & SWT 7
MiMa Fonts, Icons, Bilder in JavaFX Anwendung AWT, Swing, JavaFX & SWT 5
F Bilder zu ausführbarer Jar-Datei hinzufügen AWT, Swing, JavaFX & SWT 5
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
G JPanel mit JButtons und Bilder AWT, Swing, JavaFX & SWT 5
Linjutsu Den Inhalten aus einer ArrayList Bilder zuweisen (Kartenspiel) AWT, Swing, JavaFX & SWT 8
M Swing Bilder in Swing anzeigen AWT, Swing, JavaFX & SWT 9
S AffineTranformation Bilder verschwinden von Anzeige bei Pan, Zoom AWT, Swing, JavaFX & SWT 6
G Bilder in javafx Project AWT, Swing, JavaFX & SWT 11
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
N eclipse Java, bilder benutzten Funktioniert nicht AWT, Swing, JavaFX & SWT 6
Kirby.exe Bilder in GUI einfügen AWT, Swing, JavaFX & SWT 8
K JLabel mit Bilder im nicht initialisierten JPanel hinzufügen AWT, Swing, JavaFX & SWT 5
L Bilder werden in exportierter Datei nicht geladen AWT, Swing, JavaFX & SWT 6
C Bilder so einbinden, dass sie sich ändern AWT, Swing, JavaFX & SWT 6
J Bilder aus dem SceneBuilder werden in der Jar nicht dargestellt AWT, Swing, JavaFX & SWT 4
TheWhiteShadow JavaFX Bilder werden ungewollt Skaliert AWT, Swing, JavaFX & SWT 1
B JavaFX Bilder in einem Gewissen bereich halten AWT, Swing, JavaFX & SWT 1
J Bilder proportional verkleiner AWT, Swing, JavaFX & SWT 12
E Bilder skalieren AWT, Swing, JavaFX & SWT 4
DaCrazyJavaExpert Swing Bilder überlagern AWT, Swing, JavaFX & SWT 19
A Bilder als Hintergrund AWT, Swing, JavaFX & SWT 2
@SupressWarnings() JavaFX Bilder in executable jar laden AWT, Swing, JavaFX & SWT 5
Sugan JavaFX Bilder drucken AWT, Swing, JavaFX & SWT 0
K JPanel Bilder bei Windows nicht darstellbar AWT, Swing, JavaFX & SWT 6
Sugan Java FX Verzeichnisüberwachung -> Bilder auf GUI anzeigen AWT, Swing, JavaFX & SWT 4
E AWT Bilder als "Array" abspeichern. AWT, Swing, JavaFX & SWT 4
MrSnake Bilder aus Unterordner einfügen AWT, Swing, JavaFX & SWT 2
I 2D-Grafik Bilder Eingefügt, button jetzt im Hintergrund AWT, Swing, JavaFX & SWT 2
C SWT Treeview mit Bilder im Label verändert Expanded Icon AWT, Swing, JavaFX & SWT 1
M Swing JTextPane, Bilder und Text-flow AWT, Swing, JavaFX & SWT 2
A Mit dem Scene Builder eine Collage erstellen (Bilder beziehen aus Flickr) AWT, Swing, JavaFX & SWT 1
thet1983 JTable Bilder AWT, Swing, JavaFX & SWT 6
GenerationLost Bilder an bestimmten Platz einfügen/Objekte visualisieren AWT, Swing, JavaFX & SWT 1
J Bilder als Variable an einem Objekt speichern AWT, Swing, JavaFX & SWT 3
I Swing Bilder werden nach Export nicht angezeigt AWT, Swing, JavaFX & SWT 1
D 2D-Grafik Bilder anzeigen AWT, Swing, JavaFX & SWT 4
J Bilder auf JPanel (im JScrollPane) nacheinander laden AWT, Swing, JavaFX & SWT 0
A Swing Bilder werden nicht angezeigt AWT, Swing, JavaFX & SWT 3
I SWT Bilder, bzw. ein einzelnes Bild AWT, Swing, JavaFX & SWT 6
M Bilder zeichnen, NullPointer Exception AWT, Swing, JavaFX & SWT 3
Xbody 2D-Grafik JavaFX Bilder transformieren AWT, Swing, JavaFX & SWT 2
C 2D-Grafik Steganographie - Verschlüsselung von Dateien in Bildern - Bilder zeigen schwarze Rechtecke AWT, Swing, JavaFX & SWT 13
P Durch Bilder Scrollen AWT, Swing, JavaFX & SWT 2
F Bilder werden nicht in's Array geladen AWT, Swing, JavaFX & SWT 4
K Bilder übereinanderlegen AWT, Swing, JavaFX & SWT 11
windl Querstreifen beim Bilder malen und anpassen an neue CPU AWT, Swing, JavaFX & SWT 12
V Fertige Komponente zum Anzeigen mehrerer Bilder AWT, Swing, JavaFX & SWT 5
Karuka 2D-Grafik Bilder in GridLayout einfügen AWT, Swing, JavaFX & SWT 7
J Bilder in ausführbare jar einbinden AWT, Swing, JavaFX & SWT 7
J Swing Bilder anzeigen in Gridlayout AWT, Swing, JavaFX & SWT 11
H 2D-Grafik Bilder laden ist nicht zuverlässig AWT, Swing, JavaFX & SWT 3
F Bilder ineinander kopieren AWT, Swing, JavaFX & SWT 3
P Bilder verkleinern AWT, Swing, JavaFX & SWT 2
C SWT Mehrere Bilder in GUI laden AWT, Swing, JavaFX & SWT 5
Furtano AWT Skalierung mehrerer Bilder / Histogramme im Fenster AWT, Swing, JavaFX & SWT 4
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
T 2D-Grafik Statisches Hintergrundbild, dynamische Bilder drüber AWT, Swing, JavaFX & SWT 2
C Zwei Bilder übereinander legen AWT, Swing, JavaFX & SWT 1
L [SWT] Daten und Bilder drucken AWT, Swing, JavaFX & SWT 2
S Flickr Bilder in Gui Oberfläche AWT, Swing, JavaFX & SWT 21
L Bilder im JPanel als Hintergrund - Swing AWT, Swing, JavaFX & SWT 2
K Bilder nacheinander einfügen AWT, Swing, JavaFX & SWT 3
H Bilder auf Buttons per Klick tauschen ( Puzzle ) AWT, Swing, JavaFX & SWT 8
H Bilder in Array zufällig anordnen AWT, Swing, JavaFX & SWT 4
P 2D-Grafik Viele Bilder zu einem Video AWT, Swing, JavaFX & SWT 3
J Vergleicher zweier Bilder AWT, Swing, JavaFX & SWT 2
C zwei Bilder nacheinander anzeigen AWT, Swing, JavaFX & SWT 2
L Swing Bilder über andere Bilder laden AWT, Swing, JavaFX & SWT 3
J Bilder überlappen AWT, Swing, JavaFX & SWT 18
P Bilder werden nach Änderung nicht angezeigt AWT, Swing, JavaFX & SWT 15
3 2D-Grafik Rechtecke auf Bilder legen und auslesen AWT, Swing, JavaFX & SWT 4
M Mehrere Bilder auf einmal anzeigen AWT, Swing, JavaFX & SWT 9
P Swing html mit bilder drin AWT, Swing, JavaFX & SWT 12
F Nicht alle Bilder werden angezeigt AWT, Swing, JavaFX & SWT 2
R Bilder über URL einfügen AWT, Swing, JavaFX & SWT 4
F Applet zeigt Bilder nicht an AWT, Swing, JavaFX & SWT 5
M FileChooser Bilder auswählen AWT, Swing, JavaFX & SWT 8
G Swing Bilder zeichnen AWT, Swing, JavaFX & SWT 28
L Swing Bilder im Icons-Ordner AWT, Swing, JavaFX & SWT 4
U Bilder in Jar werden nicht gefunden AWT, Swing, JavaFX & SWT 5
S SWT Canvas: Flackernde Bilder AWT, Swing, JavaFX & SWT 3
A Bilder vergleichen AWT, Swing, JavaFX & SWT 4
E Swing JTextPane Inhalt(Text und Bilder) als HTML text bekommen AWT, Swing, JavaFX & SWT 3
E AWT Bilder und Java AWT, Swing, JavaFX & SWT 11
P Bilder einfügen AWT, Swing, JavaFX & SWT 4
D Swing JEditorPane mit HTML aber ohne Bilder AWT, Swing, JavaFX & SWT 3
S Swing Kleine Bilder in Panel einfügen AWT, Swing, JavaFX & SWT 13
A AWT Bilder als Link verwenden? AWT, Swing, JavaFX & SWT 11
T SWT Wie Bilder aus JAR-Dateien einbinden? AWT, Swing, JavaFX & SWT 12
S Bilder aus der Google Book Search API auslesen AWT, Swing, JavaFX & SWT 3
J Bilder in JScrollPane zentrieren AWT, Swing, JavaFX & SWT 5
M Bilder in einem Textfeld darstellen AWT, Swing, JavaFX & SWT 2
N Bilder aus Infos generieren lassen. Welches Framework? AWT, Swing, JavaFX & SWT 8
A SWT Bilder resizen AWT, Swing, JavaFX & SWT 9
Cloud Einige Bilder werden nicht geladen AWT, Swing, JavaFX & SWT 11
A Java Print: Bilder werden zu groß ausgedruckt AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben