KeyListener - Thread Problem

Askadi

Mitglied
Hallo habe mal wieder ein kleines Problem das ich einfach nicht verstehen kann... hier der gekürzte Quelltext dazu:

Java:
package Blemmer_v2;

import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.*;

public class blemmver_v2 {

	/**
	 * @param args
	 */
	
	static ImageIcon blemmer_img = new ImageIcon("src/BLEMMER_r.gif");
	static JLabel blemmer = new JLabel(blemmer_img);	
	static JFrame window = new JFrame("Blemmer V2");
	
	public static void main(String[] args)
	{
		// TODO Auto-generated method stub

		
		window.setBounds(10,200,800,400);
		window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
		
		Container cont = window.getContentPane();
		cont.setLayout(null);
		
		
		// Blemmer Label
		
		
		blemmer.setBounds(0,250,50,100);
		blemmer.setBackground(Color.black);
		cont.add(blemmer);
		
		
		
		
		
		
		blemmer.addKeyListener(new KeyAdapter()
		{
			 public void keyPressed(KeyEvent event)
			 {
		
				 

				 
				 // hier funktioniert leider nichts
				 if (event.getKeyCode() == KeyEvent.VK_SPACE) 
				 {
					 animation();
				 }
			 }
		});
		
		window.setVisible(true);
		
		
		
		
		
		// hier funktioniert alles wie es soll
		animation();
	}
	
	
	public static void animation()
	{
	
		try 
		{
			
				int sprung = 100;
				
				// hoch springen
				for(int i = 0; i< sprung;i++)
				{
					blemmer.setBounds(blemmer.getX(),blemmer.getY()-1, 50, 100);
					Thread.sleep(12);
				}
				
				// runter fallen
				for(int j = sprung;j >= 0;j--)
				{
					blemmer.setBounds(blemmer.getX(),blemmer.getY()+1, 50, 100);
					Thread.sleep(12);
				}
			
						
			
		} 
		catch (InterruptedException e) 
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

Das Programm soll einfach nur eine Sprung animation darstellen also ein label soll mit leertaste springen können.

Wenn die animation() aufgerufen wird zur Laufzeit funktioniert das auch warum aber nicht im KeyListener?!
 

eRaaaa

Top Contributor
Weil Listener-Codes von einem Thread ausgeführt wird, der für das Zeichnen und Darstellen der Komponenten verantwortlich ist(The Event Dispatch Thread (The Java™ Tutorials > Creating a GUI With JFC/Swing > Concurrency in Swing))
Durch dein sleep legst du diesen nun auch noch schlafen...Lösung: ein neuer Thread muss her!
Ausserdem hat das Label evtl. auch nicht den Fokus!
Probiere mal:
Java:
package Blemmer_v2;

import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.*;

public class blemmver_v2 {

	/**
	 * @param args
	 */

	static ImageIcon blemmer_img = new ImageIcon("src/BLEMMER_r.gif");
	static JLabel blemmer = new JLabel(blemmer_img);
	static JFrame window = new JFrame("Blemmer V2");

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		window.setBounds(10, 200, 800, 400);
		window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		Container cont = window.getContentPane();
		cont.setLayout(null);

		// Blemmer Label

		blemmer.setBounds(0, 250, 50, 100);
		blemmer.setBackground(Color.black);
		cont.add(blemmer);

		blemmer.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent event) {
				// hier funktioniert leider nichts
				if (event.getKeyCode() == KeyEvent.VK_SPACE) {
					new Thread(new Runnable() {
						@Override
						public void run() {
							animation();  //evtl. auch direkt lieber einen swing-timer benutzen, das erspart auch das sleep rumgegurke :)
						}
					}).start();
				}
			}
		});

		window.setVisible(true);

		// hier funktioniert alles wie es soll
		animation();
		blemmer.requestFocus();
	}

	public static void animation() {

		try {

			int sprung = 100;

			// hoch springen
			for (int i = 0; i < sprung; i++) {
				
				SwingUtilities.invokeLater(new Runnable() {
					public void run() {
						blemmer.setBounds(blemmer.getX(), blemmer.getY() - 1, 50, 100);
					}
				});
				Thread.sleep(12);
			}

			// runter fallen
			for (int j = sprung; j >= 0; j--) {
				
				SwingUtilities.invokeLater(new Runnable() {
					public void run() {
						blemmer.setBounds(blemmer.getX(), blemmer.getY() + 1, 50, 100);
					}
				});
				Thread.sleep(12);
			}

		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}
(auch den Kommentar beachten !)
 

Askadi

Mitglied
Sowas in der Art hab ich mir fast schon gedacht danke für die Hilfe ist zwar fast etwas zu viel für meinen Wissensstand aber da kann ich mich reinlesen denk ich :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B KeyListener Bug Spiele- und Multimedia-Programmierung 2
M KeyListener funktioniert nicht während Timer läuft Spiele- und Multimedia-Programmierung 26
B Den KeyListener in einer JavaFXML Application benutzen Spiele- und Multimedia-Programmierung 2
A TileMap KeyListener - Problem Spiele- und Multimedia-Programmierung 2
R Probleme mit JPanel!KeyListener geht nicht Spiele- und Multimedia-Programmierung 6
M KeyListener Spiele- und Multimedia-Programmierung 8
T Problem mit JnR-Steuerung / KeyListener Spiele- und Multimedia-Programmierung 6
F Problem mit KeyListener in Applet Spiele- und Multimedia-Programmierung 4
StrikeTom KeyListener Funktioniert nicht Spiele- und Multimedia-Programmierung 3
D Space Invaders(KeyListener Problem) Spiele- und Multimedia-Programmierung 3
S Ping Pong: KeyListener in Paint und while Spiele- und Multimedia-Programmierung 10
Developer_X Java "Multi"KeyListener Spiele- und Multimedia-Programmierung 15
C Anfängerfrage: Plazierung Panel im JFrame und KeyLIstener Spiele- und Multimedia-Programmierung 4
A Mit KeyListener zwei Tasten gleichzeitig abfragen Spiele- und Multimedia-Programmierung 2
T Doppel KeyListener Spiele- und Multimedia-Programmierung 16
S Probleme mit dem Licht und dem KeyListener Spiele- und Multimedia-Programmierung 2
K Jump n Run Keylistener und Schleifen Spiele- und Multimedia-Programmierung 8
M Jpanel mit Keylistener Spiele- und Multimedia-Programmierung 6
D Pfeiltasten beim KeyListener Spiele- und Multimedia-Programmierung 1
R KeyListener hält nicht mit Spiele- und Multimedia-Programmierung 14
G Minecraft PlayerBot (Listener Thread für jeden Spieler?) Spiele- und Multimedia-Programmierung 3
H Exeption in thread "Thread-2" NullPointerExeption: init methode? Spiele- und Multimedia-Programmierung 25
O Thread pausieren und wieder starten Spiele- und Multimedia-Programmierung 2
kaoZ Animation in eigenen Thread auslagern..... Spiele- und Multimedia-Programmierung 1
gamebreiti Daemon Thread Spiele- und Multimedia-Programmierung 4
M Point & Click Thread Probleme Spiele- und Multimedia-Programmierung 20
N JPanel Inhalt aktualisiert nach Thread.sleep nicht Spiele- und Multimedia-Programmierung 2
S Thread und jpanel-paintcomponent kombinierbar?? Spiele- und Multimedia-Programmierung 14
Kenan89 Alternative zu Thread Runnable Spiele- und Multimedia-Programmierung 2
O Universe <- show Thread Spiele- und Multimedia-Programmierung 14
Y Warum Thread für Spieleprogrammierung? Spiele- und Multimedia-Programmierung 27
C ***** bitte thread löschen *** Spiele- und Multimedia-Programmierung 3
D Snake n+1-Thread Spiele- und Multimedia-Programmierung 2
B Applet startet, aber führt den Thread nicht aus Spiele- und Multimedia-Programmierung 7
S Ein Thread für alle Animationen oder mehrere? Spiele- und Multimedia-Programmierung 2
G Thread startet nicht im Vollbild modus Spiele- und Multimedia-Programmierung 3
E TetrisApplet Thread Hilfe Spiele- und Multimedia-Programmierung 6
Developer_X Thread in Java3D Spiele- und Multimedia-Programmierung 8
D Methode in eigenem Thread auslagern Spiele- und Multimedia-Programmierung 9
S Probleme mit Thread beim Streaming Spiele- und Multimedia-Programmierung 1
F Problem mit Thread.sleep() Spiele- und Multimedia-Programmierung 7
Tapsi Thread wartet auf Threads Spiele- und Multimedia-Programmierung 7
M Thread.sleep() problem Spiele- und Multimedia-Programmierung 10
0 Workaround für Thread.sleep()-Bug Spiele- und Multimedia-Programmierung 15
M Roundbased - Thread anhalten Spiele- und Multimedia-Programmierung 8
D Wasserstrahl animieren: ein Thread je Tropfen? Spiele- und Multimedia-Programmierung 7
S Thread unterbrechen Spiele- und Multimedia-Programmierung 3
A [HILFE] - Minecraft-Problem! Spiele- und Multimedia-Programmierung 1
C Plugin Problem Spiele- und Multimedia-Programmierung 2
J JLayer Problem Spiele- und Multimedia-Programmierung 1
Meeresgott LWJGL 3 Problem mit einer Texture Spiele- und Multimedia-Programmierung 4
G Low Poly 3D LWJGL Shader Problem Spiele- und Multimedia-Programmierung 4
O Problem beim Aufrufen des Spiels von einem Menü Spiele- und Multimedia-Programmierung 7
G LIBGDX Texturen Problem Spiele- und Multimedia-Programmierung 1
G LIBGDX Problem beim resizen des Frames Spiele- und Multimedia-Programmierung 3
C AutoClicker Problem Spiele- und Multimedia-Programmierung 2
S OOP Logik Problem Spiele- und Multimedia-Programmierung 5
G LIBGDX Viewport Problem Spiele- und Multimedia-Programmierung 3
J Problem mit Game Of Life Spiele- und Multimedia-Programmierung 3
N Problem mit 2D Spiel Spiele- und Multimedia-Programmierung 17
C Minecraft Minecraft Plugin Problem Spiele- und Multimedia-Programmierung 17
R Pong Spiel Problem Spiele- und Multimedia-Programmierung 1
V Problem mit BufferStrategy Spiele- und Multimedia-Programmierung 2
Streeber Problem mit Transparenz/TextDrawing in LWJGL/Slick2d (OpenGL) Spiele- und Multimedia-Programmierung 1
E A-Stern Algorithmus Problem und Implementierung einer Map Spiele- und Multimedia-Programmierung 6
T LWJGL 2.9.2: Seltsamer Effekt beim Rendern (VertexShader Problem?) Spiele- und Multimedia-Programmierung 3
W Generelles Problem: Entscheidungsfindung Spiele- und Multimedia-Programmierung 4
T Problem bei Kollisionsabfrage Spiele- und Multimedia-Programmierung 4
C Vier Gewinnt Problem mit Ordnerstruktur Spiele- und Multimedia-Programmierung 2
T Problem mit Eclipse (java)-(minecraft) Spiele- und Multimedia-Programmierung 3
I Textbasiertes Spiel - Umsetzungsfrage & Schleifen Problem Spiele- und Multimedia-Programmierung 26
M Sound Problem Spiele- und Multimedia-Programmierung 3
T Problem beim Aufbau des Spielfelds Spiele- und Multimedia-Programmierung 18
M Sound Engin Problem 2 Spiele- und Multimedia-Programmierung 2
J Problem bei der GUI - Zu viele Spielbretter Spiele- und Multimedia-Programmierung 2
D LWJGL gluLookAt "Umschauen" Problem Spiele- und Multimedia-Programmierung 0
D Problem mit Würfelanimierung in LWJGL Spiele- und Multimedia-Programmierung 7
C Zeldaklon Problem mit Wand-Kollision Spiele- und Multimedia-Programmierung 8
0 Boxen übereinander stapelt Problem Spiele- und Multimedia-Programmierung 5
D Textfield im Game ,Problem: while-Schleife Spiele- und Multimedia-Programmierung 3
R 2D platformer - enemy damage -> TIMER PROBLEM Spiele- und Multimedia-Programmierung 3
S LWJGL Kamera Problem - Alles verzerrt Spiele- und Multimedia-Programmierung 4
B LWJGL StackOverFlow Problem nach 30sekunden. (Pong) Spiele- und Multimedia-Programmierung 2
Seikuassi LWJGL-Problem Spiele- und Multimedia-Programmierung 2
L Minecraft Minecraft Plugin programmieren (Craftbukkit 1.7.2) Problem Spiele- und Multimedia-Programmierung 4
B Minecraft mehr Ram zuweißen Problem Spiele- und Multimedia-Programmierung 0
K Bukkit Plugin Problem Spiele- und Multimedia-Programmierung 3
Y Problem mit repaint() in run() Spiele- und Multimedia-Programmierung 2
X Kleines Problem mit Java Reflections und einem eigenen Eventhandler Spiele- und Multimedia-Programmierung 1
T Problem mit Kollisionsabfrage der NPC Spiele- und Multimedia-Programmierung 1
J Minecraft Problem mit dem JRE - Minecraft Spiele- und Multimedia-Programmierung 3
TheSorm Problem mit 2 classen NullPointerException Spiele- und Multimedia-Programmierung 1
S Problem mit 4 gewinnt(MinMax Algorithmus) Spiele- und Multimedia-Programmierung 2
N Problem in der Main.class Spiele- und Multimedia-Programmierung 1
J Blöcke, Hitboxen, Koolisionsabfrage - Problem Spiele- und Multimedia-Programmierung 8
S Problem mit 3d-Polygon Spiele- und Multimedia-Programmierung 2
A Problem mit Sound Spiele- und Multimedia-Programmierung 5
C Nxt Duell Problem Spiele- und Multimedia-Programmierung 4
F LWJGL Problem mit Erstellen eines Objekts und der Kamera Spiele- und Multimedia-Programmierung 5
ruerob Problem bei Fade-Out von Sounds Spiele- und Multimedia-Programmierung 3

Ähnliche Java Themen

Neue Themen


Oben