Problem mit Hintergrundbild

Status
Nicht offen für weitere Antworten.

jagdfalke

Bekanntes Mitglied
Hi,
Ich hab ein JWindow auf das ich mit g.drawImage() in der pain()-Methode ein BufferedImage anzeigen lasse. Dummerweise werden jetzt die restlichen Elemente auf dem JWindow wie z.B. ein JLabel nicht mehr angezeigt.
Meine Fragen:
1. Warum und Wieso?
2. Wie kann ich das beheben?

Danke

jagdfalke
 

thE_29

Top Contributor
du musst als ersten Aufruf in der paint Mathode

super.paint(g); sagen!


Weil wenn du das nicht sagst, werden deine alten Elemente nicht mehr gezeichnet (du überschreibst ja die orig. paint Methode!!)

Übergibst du nichts der orig. paint Methode weiter, so weiß der ja net ob und was der zeichnen soll.... daher kommt nur das was du zeichnest!
 

jagdfalke

Bekanntes Mitglied
Ok, deine Antwort erscheint logisch aber funktionieren tuts nicht :(

Hier mal der Code:
Code:
import javax.swing.*;
import java.awt.*;
import javax.imageio.*;
import java.awt.image.*;
import java.io.*;
import javax.swing.border.BevelBorder;
import javax.swing.border.*;

public class SplashLoader extends JWindow{
	
	Container contentPane;
	Dimension dmScreen;
	BufferedImage bgImage;

    	Border bd1 = BorderFactory.createCompoundBorder(
	BorderFactory.createBevelBorder(BevelBorder.RAISED),
	BorderFactory.createEtchedBorder());

	public SplashLoader () {

		dmScreen = Toolkit.getDefaultToolkit().getScreenSize();

		try {
			File file = new File("images/splashbg.jpg");
			bgImage = ImageIO.read(file);
		} catch (IOException ex) {
			System.out.println("CANNOT FIND IMAGE");
		}	

		contentPane = getContentPane();
		contentPane.setLayout(null);

		setSize(400,300);
		setLocation(((dmScreen.width/2)-200), ((dmScreen.height/2)-150));

		JLabel lblTitle = new JLabel("Golfrechner 1.0");
		lblTitle.setBounds(30,30,300,40);
		contentPane.add(lblTitle);
	
		setVisible(true);

	}

	public void paint(Graphics g) {
		super.paint(g);
		g.drawImage(bgImage, 0 ,0, null);
		
	}

}
 

thE_29

Top Contributor
Es zeichnet genau das was du willst??


Was passt dir den nicht??

Bau die paint Methode mal aus und du wirst, es sieht genau so aus...


Nur weil du dein JWindow net gscheit initialisiert, und die Hälfte fehlt, ist nochlange nicht das paint der Schuldige dafür...

PS.: ein JWindow sieht halt einfach so aus... probier mal ein JFrame wenns net geht...
 

jagdfalke

Bekanntes Mitglied
Hä? Kapier net ganz was du willst. Mir ist schon klar, dass ein JWindow anders aussieht als ein JFrame. Hast du den Code mal compiliert? Bei mir jedenfalls wird das Bild wunderbar angezeigt, das JLabel ist trotz des super.paint(g) nicht sichtbar.

Nur weil du dein JWindow net gscheit initialisiert, und die Hälfte fehlt, ist nochlange nicht das paint der Schuldige dafür...
Was meinst du mit "net gscheit initialisierst"? Wie gehts denn richtig? Aus diesem Grund poste ich ja ins Anfängerforum, nämlich weil ich ANFÄNGER bin!!!

mfg
jagdfalke
 

thE_29

Top Contributor
meine Güte... das meinst du....


Also, stell dir vor, java Apps sind wie ein Blatt Papier!

Das was du zuerst zeichnest ist als erstes oben, wenn du was drübermalst, isses dahinter (dein label ist hinter dem bild)

wenn du es gar net malst (super.paint(g)) dann ist auch nix auf dem Papier...


Dein Label fühlt das ganze JWindow aus und wenn du jetzt das Bild noch drüberlegst, verschwindet es!

Setz die Koordinaten fürs Bild mal nicht auf 0,0 sondern 0,80 oder so und du wirst sehen, dein Bild ist unerm label!
 

jagdfalke

Bekanntes Mitglied
ok das würde heißen ich müsste zuerst g.drawImage(bgImage, 0, 0, null); und dannach super.paint(g); ausführen oder?
denn super.paint() schein ja dafür verantwortlich zu sein die Komponenten zu zeichnen und wenn ich es über dem Image haben will muss es als letztes gezeichnet werden, richtig?

Aber warum füllt mein JLabel das ganze JWindow aus? Ich hab setLayout(null) ausgeführt und setBounds() auch, also müsste es begrenzt sein. Aber es scheint wirklich so zu sein, dass es alles ausfüllt, denn beim starten sieht man ganz kurz das Bild, dann wird es überdeckt.

mfg
jagdfalke
 

thE_29

Top Contributor
Mach das mal ins paint!

Code:
super.paint(g);
       g.drawImage(bgImage, 0 ,80, this);
 

jagdfalke

Bekanntes Mitglied
ob da "this" oder "null" steht scheint keinen Unterschied zu machen.
Bild im Vordergrund, JLabel dahinter.
 

jagdfalke

Bekanntes Mitglied
Ich hab das hier schon mal in dem anderen Forum gefragt und auch dort konnt niemand das Problem lösen. Vielleicht gehe ich das ganze falsch an. Macht ihr doch mal ein JWindow mit nem Hintergrundbild und ein paar komponenten und postet den Code vielleicht kommen wir dann weiter.
 
B

Beni

Gast
Du willst das Bild im Hintergrund, also musst du zuerst das Bild zeichnen, danach super.paint aufrufen, damit das Label gezeichnet wird.
Da einige Components ihren Hintergrund einfach mit grau füllen, solltest du bei allen Components die du auf das Window setzt setOpaque( false ) aufrufen, damit sie gar keinen Hintergrund zeichnen.
 

jagdfalke

Bekanntes Mitglied
Also:
Jetzt sehe ich kurz das gewünschte Bild, dann ist es weg, alles ist grau und das Lable ist sichtbar.

Bitte probier den Code mal aus !!!
Code:
import javax.swing.*;
import java.awt.*;
import javax.imageio.*;
import java.awt.image.*;
import java.io.*;
import javax.swing.border.BevelBorder;
import javax.swing.border.*;

public class SplashLoader extends JWindow{
	
	Container contentPane;
	Dimension dmScreen;
	BufferedImage bgImage;

    	Border bd1 = BorderFactory.createCompoundBorder(
	BorderFactory.createBevelBorder(BevelBorder.RAISED),
	BorderFactory.createEtchedBorder());

	public SplashLoader () {

		dmScreen = Toolkit.getDefaultToolkit().getScreenSize();

		try {
			File file = new File("images/splashbg.jpg");
			bgImage = ImageIO.read(file);
		} catch (IOException ex) {
			System.out.println("CANNOT FIND IMAGE");
		}	

		contentPane = getContentPane();
		contentPane.setLayout(null);		

		setSize(400,300);
		setLocation(((dmScreen.width/2)-200), ((dmScreen.height/2)-150));

		JLabel lblTitle = new JLabel("Golfrechner 1.0");
		lblTitle.setBounds(0,0,100,20);
		lblTitle.setBorder(bd1);
		lblTitle.setOpaque(false);
		contentPane.add(lblTitle);
	
		setVisible(true);

	}

	public void paint(Graphics g) {
		g.drawImage(bgImage, 0 ,0, null);
		super.paint(g);
	}

}
 

jagdfalke

Bekanntes Mitglied
Es haut alles hin, WENN ich das Bild in einem ImagePanel darstelle also so:
Code:
public class ImagePanel extends JPanel {

	BufferedImage image;
	int width, height;

	public ImagePanel(String path) {
		this.mode = mode;
		try {
			File file = new File(path);
			image = ImageIO.read(file);
		} catch (IOException ex) {
			System.out.println("CANNOT FIND IMAGE");
		}
	}


	public void paint(Graphics g) {
		g.drawImage(image, 0, 0, null);
	}

}

und mit ImagePanel pnl = new ImagePanel("bla.jpg") einbinde. Allerdings sind die Komponenten, die ich zuerst zum ContentPane hinzufüge im Vordergrung, was ja die Theorie mit dem Blatt Papier, die vorhin mal erwähnt wurde, widerlegt. D.h.

getContentPane().add(lbl1);
getContentPane().add(testfield1);
getCOntentPane().add(pnl);

führt dazu, dass das Panel im Hindergrund ist, das Label und das TextField davor. Das soll einer verstehn !!!
Vielleicht klapps NUR so!? Kann das sein? Dass man nicht was Zeichnen kann und ne Komponente davor stellt?

mfg
jagdfalke
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Problem mit Hintergrundbild in Applet Java Basics - Anfänger-Themen 2
S Problem mit Hintergrundbild Java Basics - Anfänger-Themen 8
C Problem mit Spring Boot Dependency Injection Java Basics - Anfänger-Themen 12
R Best Practice Problem mit (einfacher) Doppelt-Schleife Java Basics - Anfänger-Themen 53
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
A ScheduledExecutorService problem Java Basics - Anfänger-Themen 7
marcelnedza Problem mit Weltzuweisung, JavaKarol Java Basics - Anfänger-Themen 13
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
M Erste Schritte Collatz Problem max int Java Basics - Anfänger-Themen 3
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
L Problem bei Rechnung mit Math.pow Java Basics - Anfänger-Themen 13
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
SUPERTJB return Problem Java Basics - Anfänger-Themen 3
sserio BigInteger Problem Java Basics - Anfänger-Themen 4
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
K Problem mit "Random" Java Basics - Anfänger-Themen 5
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
xanxk Problem For-Schleife mit Charakter Java Basics - Anfänger-Themen 2
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Schleife Problem Java Basics - Anfänger-Themen 2
D Problem mit der Erkennung von \n Java Basics - Anfänger-Themen 2
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
HeiTim Problem mit der Kommasetzung an der richtigen stelle Java Basics - Anfänger-Themen 59
Temsky34 Problem mit dem Code Java Basics - Anfänger-Themen 17
P Problem mit Calendar.getDisplayName() Java Basics - Anfänger-Themen 8
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
M Problem mit Klassenverständnis und Button Java Basics - Anfänger-Themen 8
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
H Problem mit Verzweigungen Java Basics - Anfänger-Themen 6
H Problem mit Rückgabewert Java Basics - Anfänger-Themen 7
josfe1234 JAVA FX problem Java Basics - Anfänger-Themen 3
A Code Problem Java Basics - Anfänger-Themen 6
Henri Problem von Typen Java Basics - Anfänger-Themen 7
J Problem mit "ArrayIndexOutOfBoundsException" Java Basics - Anfänger-Themen 11
K jackson Mapping - Problem mit Zeitzonen Java Basics - Anfänger-Themen 10
B Threads Problem mit mehreren Threads Java Basics - Anfänger-Themen 38
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
D Schleifen Problem Java Basics - Anfänger-Themen 2
H So viele Fehlermeldungen, dass ich nicht weiß wo das Problem ist. Java Basics - Anfänger-Themen 6
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13
T Problem mit Lehrzeichen und String bei einfacher Chiffre Java Basics - Anfänger-Themen 8
J extends Problem Java Basics - Anfänger-Themen 2
C Polymorphie-Problem Java Basics - Anfänger-Themen 3
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
I Format Problem mit Wert - bekomme 0,10 anstatt 10,00 Java Basics - Anfänger-Themen 6
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
amgadalghabra algorithmisches Problem Java Basics - Anfänger-Themen 19
J Traveling Salesman Problem [Arrays] Java Basics - Anfänger-Themen 9
R ArrayList Problem Java Basics - Anfänger-Themen 6
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
C RegEx Problem Java Basics - Anfänger-Themen 4
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
E Taschenrechner GUI Problem mit Fehlerhandling Java Basics - Anfänger-Themen 6
M Input/Output Fallunterscheidung Problem Java Basics - Anfänger-Themen 17
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
M Problem bei Ausgabe Java Basics - Anfänger-Themen 7
Splayfer Java Array Problem... Java Basics - Anfänger-Themen 2
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
G Subset sum problem mit Backtracking Java Basics - Anfänger-Themen 18
N Problem mit Scanner Java Basics - Anfänger-Themen 2
J Klassen Problem Java Basics - Anfänger-Themen 8
A Out.format problem. Java Basics - Anfänger-Themen 3
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
A Array problem Java Basics - Anfänger-Themen 16
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
W Remote Method Invocation RMI - Problem Java Basics - Anfänger-Themen 0
I Ich habe ein Problem Java Basics - Anfänger-Themen 3
A Problem bei returnen eines Wertes Java Basics - Anfänger-Themen 6
M Regex Erstellung Problem Java Basics - Anfänger-Themen 2
D Input/Output Problem bei der Benutzereingabe eines Befehls Java Basics - Anfänger-Themen 14
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
F Habe ein problem mit dem ActionListener Java Basics - Anfänger-Themen 3
C Regex-Problem Java Basics - Anfänger-Themen 4
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
M Problem in der Modellierung Java Basics - Anfänger-Themen 20
W Wo ist das URL-Problem ? Java Basics - Anfänger-Themen 1
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
D FileWriter / FileReader Problem Java Basics - Anfänger-Themen 10
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
J Problem mit Array: 2 Klassen Java Basics - Anfänger-Themen 2
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
C Problem mit If Else If und Überprüfung eines Counters Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben