Dialog im Hintergrund zeichnen geht nicht?

115%

Gesperrt
Ich versuche ein Bild in den Hintergrund zuzeichnen, dies gelingt mir aber nicht so ganz. Die frage die sich bei mir stellt ist warum den Keine Exception, nichts :confused: Es geht darum eine Bilddatei aus dem Jar zu laden und als Hintergrund des Dialoges zu zeichnen.

Informationen:
- JDK 1.6.4
- Eclipse 3.3

Könnt ihr mir sagen was ich falsch mache?
Java:
import java.awt.Graphics;
import java.awt.Image;
import java.io.File;

import javax.swing.JDialog;

public class Test extends JDialog{

	public Test () {
		
		this.pack();
		this.setLocationRelativeTo(null);
		this.setModal(true);
		this.setTitle("");
		this.setVisible(true);
	}	
	
	@Override
	public void paintComponents(Graphics g) {
		super.paintComponents(g);
		
		File  file    = new File(getClass().getResource("/bilder/test.png").getFile());
		Image ii_bild = getToolkit().getImage(file.toString());

		g.drawImage(ii_bild, 0, 0, this);
	}
	
	public static void main(String[] args) {
		new Test();
	}
}

Danke
 
Zuletzt bearbeitet:
Hallo,

das liegt daran, dass Java von Haus aus keine Bitmaps lesen kann. Versuch es mal mit jpg, gif oder png Dateien.

MFG

Sascha
 
Könnte das eventuell jemand überprüfen.:rolleyes: Eventuell geht es nur bei mir nicht:eek:

Ich habe leider keinen Zweitrechner und habe auch keinen Anhaltspunkt woran es liegen könnte. : Help :
 
Wie soll das so auch funktionieren?

Erstmal ist ein pack auf einem Dialog der keinen Inhalt hat nicht gerade sinnvoll. Ein setSize wäre angebrachter, damit man überhaupt was sieht. Dann habe ich mich gerade geärgert weil mal wieder die Close Operation fehlte, und ich so nen haufen noch laufende Prozesse produziert habe.

Dann gibt es einfache Sachen die man prüfen sollte wenn ein Programm nicht läuft: Wird die Methode in der mein Code drin steht überhaupt aufgerufen? In dem Fall: Nein. paintComponents wird aufgerufen um die enthaltenen Komponente eines Containers darzustellen. Dieser hat überhaupt keine... In dem Fall also paint überschreiben.

Es ist ziemlich unschön ein Bild in einer paint-Method zu laden. Solltest du außerhalb machen.

Dann verstehe ich nicht warum du ein File in ein File packst statt einfach die URL zu nehmen die du von getResource bekommst und damit dann getImage aufzurufen.

Ja... dann sollte es eigentlich funktionieren. Nicht unbedingt in einer IDE aber im Jar eigentlich schon.
 
Hallo ich bin's,

also teste es mal so:
nicht die paintComponents sondern die paint Methode überschreiben,
dann vielleicht eine globale Variable auf die du in paint() zugreifen kannst als Image setzen.
diese dann im Konstruktor oder wo auch immer mit
Java:
this.image = new ImageIcon(filename).getImage();
initialisieren.
Wenn Du das in paint() machst erzeugst Du das Bild jedesmal neu wenn einer was an deinem Fenster ändert.
 
Zurück