im fenster ein hintergrund bild einfügen

Status
Nicht offen für weitere Antworten.

Nao88

Bekanntes Mitglied
wie kann ich hier im Fenster ein Bild als Background setzen
geht das vieleicht mit paint
Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class Fenster extends JFrame {
Fenster(){
	super("Mein Fenster");
	this.setDefaultCloseOperation(EXIT_ON_CLOSE);
	this.setSize(250, 200);
	Container contentPane=getContentPane();
	contentPane.setLayout(new FlowLayout(FlowLayout.CENTER));
	
	contentPane.setBackground(Color.BLUE);	//wie kann ich im hintergrund ein img einfügen
		
	this.setResizable(false);
	this.setLocation(200, 200);
	this.setVisible(true);
	}
}
 
Versuch'a mal so:
Java:
Fenster() {
    super("Mein Fenster");
    JLabel picture = new JLabel(new ImageIcon(getClass().getResource("DSCN0274.JPG")));
    setContentPane(picture);
...
 
Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
 
class Fenster extends JFrame {
Fenster(){
    super("Mein Fenster");
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    this.setSize(250, 200);
    Container contentPane=getContentPane();
    contentPane.setLayout(new FlowLayout(FlowLayout.CENTER));
    JLabel picture = new JLabel(new ImageIcon(getClass().getResource("DSCN0274.JPG")));
    setContentPane(picture);

    //contentPane.setBackground(Color.BLUE);  //wie kann ich im hintergrund ein img einfügen
        
    this.setResizable(false);
    this.setLocation(200, 200);
    this.setVisible(true);
    }
}
public class HauptFenster 
{

	public static void main(String[] args) 
	{
		Fenster f=new Fenster();

	}

}
gbit ein fehler
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at Fenster.<init>(HauptFenster.java:12)
at HauptFenster.main(HauptFenster.java:27)
 
ich mach das so: (ohne den classloader funktionierts bei mir nicht...)
Java:
String backgroundImageFileName = "DSCN0274.JPG";
JLabel picture = new JLabel(new ImageIcon(ImageIO.read(this.getClass().getClassLoader()
				.getResourceAsStream(backgroundImageFileName))));
 
Zuletzt bearbeitet:
bekomme immer noch ein fehler

Java:
class Fenster extends JFrame {
Fenster(){
    super("Mein Fenster");
    
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    this.setSize(250, 200);
    Container contentPane=getContentPane();
    contentPane.setLayout(new FlowLayout(FlowLayout.CENTER));


    String backgroundImageFileName = "Desert.JPG";
    JLabel picture = new JLabel(new ImageIcon(ImageIO.read(this.getClass().getClassLoader()
                  .getResourceAsStream(backgroundImageFileName))););
    //contentPane.setBackground(Color.BLUE);  //wie kann ich im hintergrund ein img einfügen
        
    this.setResizable(false);
    this.setLocation(200, 200);
    this.setVisible(true);
    }
}
 
ok, war doch nicht so wie ich dachte, zum glück 🙂
immernoch der gleiche fehler? geb mal den absoluten pfad zum bild, an, da wo es wirklich auf der platte liegrt. relative pfade sind zum testen auch immer gefährlich, wenn man nicht genau weiß wie man drauf zugreift
 
Java:
    JLabel picture = new JLabel(new ImageIcon(ImageIO.read(this.getClass().getClassLoader()
                  .getResourceAsStream(backgroundImageFileName)))  ; );
er sagt das erste sinikolon sie falsch in line 2 aber ich kann das da ja nicht weg löschen

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Syntax error on token ";", delete this token

at Fenster.<init>(HauptFenster.java:18)
at HauptFenster.main(HauptFenster.java:31)
 
Java:
    JLabel picture = new JLabel(new ImageIcon(ImageIO.read(this.getClass().getClassLoader()
                  .getResourceAsStream(backgroundImageFileName)))  ; );
er sagt das erste sinikolon sie falsch in line 2 aber ich kann das da ja nicht weg löschen

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Syntax error on token ";", delete this token

at Fenster.<init>(HauptFenster.java:18)
at HauptFenster.main(HauptFenster.java:31)

einfach machen was der debugger sagt... ";" löschen

Java:
    JLabel picture = new JLabel(new ImageIcon(ImageIO.read(this.getClass().getClassLoader()
                  .getResourceAsStream(backgroundImageFileName))));
 
dann kommt der Fehler
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Unhandled exception type IOException

at Fenster.<init>(HauptFenster.java:23)
at HauptFenster.main(HauptFenster.java:64)
 
jetzt kommt kein fehler mehr aber das bild wird nicht angezeigt ???
Java:
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
class Fenster extends JFrame
{
	Fenster()
	{

		super("hintergrung");
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);

		this.setSize(600,500);
		String backgroundImageFileName = "Desert.JPG";

	    try {
			JLabel picture = new JLabel(new ImageIcon(ImageIO.read(this.getClass().getClassLoader()
			        .getResourceAsStream(backgroundImageFileName))));
		} catch (IOException e) {
		
			e.printStackTrace();
		}
		this.setLocation(350,200);
		this.setVisible(true);
	}
}
 
schon mit dem absoluten pfad versucht???? 😉 auch wenn du das für den produktivbetrieb nicht realisieren kannst, versuch es wenigstens im testsystem. schaden kanns nicht, dann kannst du ausschließen, dass es am fehlenden pfad liegt
 
soo wenn ich ihn direkt setzte kommt diese fehler meldung
Exception in thread "main" java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(Unknown Source)
at Fenster.<init>(HauptFenster.java:25)
at HauptFenster.main(HauptFenster.java:50)
 
...auch wenn du das für den produktivbetrieb nicht realisieren kannst...
hehe, der war gut!

Exception in thread "main" java.lang.IllegalArgumentException: input == null!
heisst nichts anderes als dass er dein bild nicht finden kann...

hast du so einen pfad angegeben:
Java:
String pfad = "C:\user\ich\bild.jpg";
oder so:
Java:
String pfad = "C:\\user\\ich\\bild.jpg";
oder so:
Java:
String pfad = "C:/user/ich/bild.jpg";

nur variante zwei und drei funktionieren, da in den strings der \ als escape zeichen genommen wird...
 
naja, hier gehts eher um basics wie "was mache ich mit 'standard' ausgaben vom compiler";
(ausgaben die nicht mehr als 5 zeilen sind)
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben