HashMap liefert nicht gewünschten Wert (gar nix)

fuuya

Mitglied
Hallo liebes Forum,
ich weiß, mein Problem ist etwas komplexer, aber ich werde versuchen es so plausibel wie möglich zu erklären.
---Einleitung---
Vorweg: der Quellcode des ganzen Programms ist als Java-package hier auf mediafire zu finden (da sind ein paar bilder dabei also nicht wundern, warum das ganze so groß ist). ich werde im folgenden nur Ausschnitte daraus verwenden, wer mehr Hintergrundwissen will lädt sich das ganze runter und kann es sich dann im editor angucken.
Außerdem bin ich noch "Anfänger" was das programmieren mit Java angeht, besonders mit GUI-Elementen (Erfahrungen bereits seit mehreren Jahren in anderen Programmiersprachen und Java sein 1 1/2 Jahren an der Schule).


---Problem---
Mein Problem ist folgendes:
Ich lese in einer Initialisierungsmethode ein BufferedImage ein und male einen Teil davon in ein neues BufferedImage. Dieses speichere ich dann in einer HashMap<Entity, BufferedImage> ab. Wenn ich dann allerdings das ganze mit der get(Entity)-Methode wieder abrufen will, kommt nicht das raus was ich will (nämlich nix).

Code:
Java:
//Init - Methode in dem TexturContainer
                BufferedImage temp = ImageIO.read(getClass().getResource(entityFileName));

                BufferedImage player = new BufferedImage(200, 200, imgType);
                BufferedImage zombie = new BufferedImage(200, 200, imgType);

                Graphics2D g;

                g = player.createGraphics();
                g.drawImage(temp,
                        0, 0, 200, 200,
                        0, 0, 200, 200,
                        null);

                g = zombie.createGraphics();
                g.drawImage(temp,
                        0, 0, 200, 200,
                        0, 200, 200, 400,
                        null);


                entities.put(new Player(null).getKey(), player); //Player und Zombie sind Unterklassen von Entity
                entities.put(new Zombie(0, 0, null, 0).getKey(), zombie); //getKey() liefert eine singleton instanz
Java:
//get(Entity key, int status)-Methode des TextureContainer s
            BufferedImage img = new BufferedImage(50, 50, imgType);
            Graphics2D g = img.createGraphics();
            switch ((int) key.getdirection()) {
                case 0:
                    g.drawImage(entities.get(key),
                            0, 0, 50, 50,
                            50 * status, 0, 50 * status + 50, 50, null);
                    break;
                case 1:
                    g.drawImage(entities.get(key),
                            0, 0, 50, 50,
                            50 * status, 50, 50 * status + 100, 50, null);
                    break;
                case 2:
                    g.drawImage(entities.get(key),
                            0, 0, 50, 50,
                            50 * status, 100, 50 * status + 150, 50, null);
                    break;
                case 3:
                    g.drawImage(entities.get(key),
                            0, 0, 50, 50,
                            50 * status, 150, 50 * status + 200, 50, null);
                    break;
                default:
                    System.out.println("Fehler bei der Richtung von key (TextureContainer)");
            }
            return img;
wenn ich dann das Bild malen lasse, wird nix gemalt. das Bild hat eine Größe von 200 * 400 und besteht aus 2*16 einzelbildern (erst Spieler, dann Zombie - horizontal die verschiedenen Laufstadien, vertikal die verschiedenen Richtungen)

Ich freue mich auf Rückmeldung :)
 

Gucky

Top Contributor
Ich kann mir deinen ganzen Code gerade nicht ansehen aber mir fallen mehrere Dinge auf: Arbeitest du mit Swing? Wenn ja, hast du an die paintComponent-Methode gedacht, um auf den Swing Elementen zu zeichnen? Und hast du die preferredSize() auf etwas Richtiges gesetzt? Sonst kann nicht sichtbar gemalt werden.

Du benutzt die graphics eines BufferedImage. Woher weiß das Image, worauf es malen soll? Musst du nicht das Graphics des Containers, den du verwendest nehmen und da dann g.draeImage(deinBild) nehmen? Malst du nicht sonst auf dem noch nicht gemalten BufferedImage? Das ist jetzt aber nur Spekulation.
 

turtle

Top Contributor
Wenn deine Vermutung richtig ist, warum schreibst du nicht ein kleines Testprogramm, das deine Vermutung prüft?

Mein kleiner Test funzt ohne Probleme:
Java:
public class LblTest extends JPanel {
	Map<String, ImageIcon> map;
	JLabel pigLabel = new JLabel();

	public LblTest(String picName) {
		map = new HashMap<>();
		ImageIcon imageIcon1 = LblTest.createImageIcon("images/Pig.gif");
		ImageIcon imageIcon2 = LblTest.createImageIcon("images/Bird.gif");
		map.put("Pig", imageIcon1);
		map.put("Bird", imageIcon2);
		ImageIcon imageIcon = map.get(picName);
		pigLabel.setIcon(imageIcon);
		add(pigLabel);
	}

	public static void main(String[] args) {
		JFrame frame = new JFrame("B");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.add(new LblTest(args[0]));
		frame.pack();
		frame.setVisible(true);
	}

	/** Returns an ImageIcon, or null if the path was invalid. */
	protected static ImageIcon createImageIcon(String path) {
		java.net.URL imgURL = LblTest.class.getResource(path);
		if (imgURL != null) {
			return new ImageIcon(imgURL);
		} else {
			System.err.println("Couldn't find file: " + path);
			return null;
		}
	}
}
 

fuuya

Mitglied
Zu Gucky:

Ja das klappt alles. Die get Methode dient lediglich dazu die Texturen aus dem Container zu holen, dieses Bild wird dann auf ein Panel gemalt.
EDIT: JPanel


Zu turtle:

Eigentlich sollte es genau so funktionieren, tut es nur leider nicht...
 
Zuletzt bearbeitet:

Ruzmanz

Top Contributor
Der Link funktioniert nicht. Nehme einfach einen String als Schlüssel für die HashMap und es wird wahrscheinlich funktionieren. Ich glaube du hast da einige Konzepte nicht verstanden und vermischt so ein paar Sachen.

- Singleton ... Warum ist es sinnvoll über den statischen Weg auf Singleton-Instanzen zuzugreifen?
- HashMap ... Wie funktioniert das für Objekte?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Hashmap mit 2D Graphics Spiele- und Multimedia-Programmierung 7
M Java Textadventure HashMap wird nicht befüllt? Spiele- und Multimedia-Programmierung 7
kaoZ Graphics Objekt liefert null Spiele- und Multimedia-Programmierung 14
F getRGB liefert andere Werte als PS? Spiele- und Multimedia-Programmierung 8
B Bild wird nicht geladen Spiele- und Multimedia-Programmierung 4
Fabel TicTacToe MiniMax Algorithmus geht nicht Spiele- und Multimedia-Programmierung 4
ThoraxLaneus Minecraft MCP-Client mit Optifine fertig machen in IntelliJ klappt nicht ganz Spiele- und Multimedia-Programmierung 6
K Mein Jump and Run charakter bewegt sich nicht mehr rückwärts... Spiele- und Multimedia-Programmierung 0
P Pokemon Spiel Funktioniert nicht ? Spiele- und Multimedia-Programmierung 3
D MIDIdevice open funktioniert nicht Spiele- und Multimedia-Programmierung 1
Mika_MDF Minecraft Eclipse startet Minecraft nicht? Spiele- und Multimedia-Programmierung 23
H Musik Datei lädt nicht? Spiele- und Multimedia-Programmierung 8
A Kollision funktioniert nicht richtig bei zu schneller Geschwindigkeit des Spielers Spiele- und Multimedia-Programmierung 0
JeremyStarTM Minecraft Minecraft Spigot Server akzeptiert JAR-Version nicht Spiele- und Multimedia-Programmierung 8
K Das Leerzeichen der Tastatur wird nicht gleichgesetzt mit dem Leerzeichen aus der Text Datei Spiele- und Multimedia-Programmierung 5
P Teamspeak interface mit JFrame funktioniert nicht Spiele- und Multimedia-Programmierung 3
coolian slick lwjgl text darstellen mit UnicodeFont funktoniert nicht? Spiele- und Multimedia-Programmierung 11
Z Minecraft Multiplayer geht nicht Spiele- und Multimedia-Programmierung 2
L Minecraft 1.7.10 Server startet nicht Spiele- und Multimedia-Programmierung 1
R Memory - Nicht alle Button lassen sich aktivieren? Spiele- und Multimedia-Programmierung 1
D Kollision funktioniert unten aber nicht oben Spiele- und Multimedia-Programmierung 4
C Java findet FluidSynth nicht Spiele- und Multimedia-Programmierung 2
N der Player bewegt sich nicht Spiele- und Multimedia-Programmierung 14
D Java Bild bewegen funktioniert nicht Spiele- und Multimedia-Programmierung 8
Damtonix Gameloop funktioniert nicht! Spiele- und Multimedia-Programmierung 6
N Warum tut der Gegner nicht das was er soll? Spiele- und Multimedia-Programmierung 13
N Warum ist das Fenster nicht schwarz? Spiele- und Multimedia-Programmierung 26
B Programmieren wie der Befehl /ban in Minecraft geblockt wird aber nicht /ban mit einem Argument Spiele- und Multimedia-Programmierung 1
A Dateifehler - Öffnet nicht Spiele- und Multimedia-Programmierung 7
temi libGDX Box2d ApplyTorque() funktioniert nicht Spiele- und Multimedia-Programmierung 1
R Laufbewegung geht nicht.. Spiele- und Multimedia-Programmierung 1
J OpenGL Bild wird nicht richtig angezeigt Spiele- und Multimedia-Programmierung 2
S GetBufferStrategy-Methode wird nicht angezeigt Spiele- und Multimedia-Programmierung 6
M KeyListener funktioniert nicht während Timer läuft Spiele- und Multimedia-Programmierung 26
F vlcj läuft nicht exportiert, aber in Eclipse Spiele- und Multimedia-Programmierung 2
A MouseListener ändert nicht das Lable Icon. Spiele- und Multimedia-Programmierung 2
G LWJGL Rendert nicht Spiele- und Multimedia-Programmierung 3
A Spielball bewegt sich nicht richtig, prallt falsch ab Spiele- und Multimedia-Programmierung 7
S KeyEvent funktioniert nicht, wenn Buttons dem Frame hinzugefügt werden Spiele- und Multimedia-Programmierung 7
Blender3D VLCJ Video lässt sich nicht mehr abspielen nach mysql Installation Spiele- und Multimedia-Programmierung 1
J Programm kann Audio Datei nicht finden Spiele- und Multimedia-Programmierung 7
Viktim Snake - Schlange wächst nicht Spiele- und Multimedia-Programmierung 3
J Mensch Ärgere Dich nicht - Künstliche Intelligenz Spiele- und Multimedia-Programmierung 2
C Export als .jar funktioniert nicht richtig (JAVA 3D) Spiele- und Multimedia-Programmierung 5
L Mensch ärgere dich nicht Spiele- und Multimedia-Programmierung 9
Polarfuchs Status von Midi Datei(wird gerade abgespielt oder nicht) Spiele- und Multimedia-Programmierung 0
A Bild(sequenz) wird nicht geladen Spiele- und Multimedia-Programmierung 1
4 AudioSystem.write() wirft IllegalArgumentException, obwohl dies eig. nicht passieren dürfte Spiele- und Multimedia-Programmierung 2
V Methoden werden zwar ausgeführt führen aber nicht zum Ergebnis Spiele- und Multimedia-Programmierung 5
M [JOGL] eclipse export Runnable Jar - startet nicht Spiele- und Multimedia-Programmierung 3
B LWJGL / OPENGL Kriege Depth-Test nicht hin :( Spiele- und Multimedia-Programmierung 0
S Slick2D KeyInput reagiert nicht. Spiele- und Multimedia-Programmierung 3
S Quaxli's Heli Spiel läuft nicht nach Plan Spiele- und Multimedia-Programmierung 2
W [libGDX] findet SplashScreen.png nicht Spiele- und Multimedia-Programmierung 4
T LWJGL VBO's funktionieren nicht, geben aber auch keinen Fehler Spiele- und Multimedia-Programmierung 0
Androbin Kollision zwischen Raster und Nicht-Raster Spiele- und Multimedia-Programmierung 2
O Fehler bei Programmierung lässt Figur nicht bewegen Spiele- und Multimedia-Programmierung 5
Androbin Mein Spiel will sich nicht zeichnen lassen !!! Spiele- und Multimedia-Programmierung 7
B Mein Programm reagiert nicht auf den Tasstendruck Spiele- und Multimedia-Programmierung 1
J mensch ärger dich nicht Spiele- und Multimedia-Programmierung 1
M Spiele Tutorial.. Findet Bilddateien nicht Spiele- und Multimedia-Programmierung 6
G Ausführbare Jar findet Bilddateien nicht... Spiele- und Multimedia-Programmierung 4
P Rotation von Sprite klappt nicht Spiele- und Multimedia-Programmierung 4
A Minecraft Java Ubuntu Minecraft Server startet nicht - ERROR (SIGSEGV) Spiele- und Multimedia-Programmierung 7
F LWJGL: Licht und GL_LINES funktioniert nicht Spiele- und Multimedia-Programmierung 6
A [LWJGL] BMP Textur wird nicht richtig dargestellt Spiele- und Multimedia-Programmierung 8
N JPanel Inhalt aktualisiert nach Thread.sleep nicht Spiele- und Multimedia-Programmierung 2
S LWJGL Rechteck wird nicht gezeichnet Spiele- und Multimedia-Programmierung 6
J KeyMapping funktioniert nicht Spiele- und Multimedia-Programmierung 5
R Minecraft Minecraft läuft nicht paralel mit minecraft server ? Spiele- und Multimedia-Programmierung 3
S eine nullpointerexception, wo sie nicht sein sollte Spiele- und Multimedia-Programmierung 12
J Java3D - Textur laden geht nicht Spiele- und Multimedia-Programmierung 9
S Mensch-Ärger-Dich-Nicht Methoden Spiele- und Multimedia-Programmierung 2
S VLCJ libjawt.so nicht gefunden Spiele- und Multimedia-Programmierung 3
J Sound einbinden funktioniert nicht Spiele- und Multimedia-Programmierung 13
A JME3 will Blender/j3o Objekte nicht einladen Spiele- und Multimedia-Programmierung 3
D Slick Lib - Bilder einlesen funktioniert nicht Spiele- und Multimedia-Programmierung 2
Q BufferedImage vs. Heap Space ‒ Warum wird der Speicher nicht freigegeben? Spiele- und Multimedia-Programmierung 6
T LWJGL Grafik meines Projektes läuft nicht korrekt auf meinem iMac Spiele- und Multimedia-Programmierung 19
B LWJGL/OpenGL rendert manche Objekte nicht Spiele- und Multimedia-Programmierung 6
D Key Listener reagiert nicht ! Spiele- und Multimedia-Programmierung 4
CookieSoft 3D Würfel will sich nicht drehen! [LWJGL] Spiele- und Multimedia-Programmierung 2
T lwjgl vertex buffer rendert nicht Spiele- und Multimedia-Programmierung 9
R Kollisionsabfrage haut nicht hin Spiele- und Multimedia-Programmierung 15
R Probleme mit JPanel!KeyListener geht nicht Spiele- und Multimedia-Programmierung 6
A Patter Array Eintrag vergleichen geht nicht!!! Spiele- und Multimedia-Programmierung 3
M Jmonkey läuft nicht Spiele- und Multimedia-Programmierung 7
0 Finde den Fehler nicht Spiele- und Multimedia-Programmierung 2
M Mathetrainer - Reset Button funktioniert nicht! Spiele- und Multimedia-Programmierung 8
A OpenGL Textur und nicht Textur Spiele- und Multimedia-Programmierung 2
D JAR file startet manchmal nicht Spiele- und Multimedia-Programmierung 3
S MouseEvent.getPint() ist nicht Courser Spitze Spiele- und Multimedia-Programmierung 4
M Minecraft Bukkit Server VM Kann nicht Vergrößert werden Spiele- und Multimedia-Programmierung 20
K Kugeln werden nicht unsichtbar Spiele- und Multimedia-Programmierung 23
K Transformation wird nicht angewendet Spiele- und Multimedia-Programmierung 3
E Spiel startet nach exportieren nicht Spiele- und Multimedia-Programmierung 7
T JMonkey Textur nicht ganz angezeigt Spiele- und Multimedia-Programmierung 3
W Java3D: Farbe von Objekten stimmt nicht mit übergebenem RGB-Wert überein Spiele- und Multimedia-Programmierung 9
M Mensche Ärgere Dich Nicht Spiele- und Multimedia-Programmierung 4
D LWJGL - 2D Texturen werden nicht dargestellt Spiele- und Multimedia-Programmierung 12

Ähnliche Java Themen

Neue Themen


Oben