Animation mit Keylistener

Status
Nicht offen für weitere Antworten.

Mr.Sado

Mitglied
Hallo, ich habe erst vor ein paar Wochen mit Java angefangen und wollte mich jetzt in die Animation einarbeiten.
Mein erstes Programm bewegt ein Rechteck in einem JPanel bis zu den Grenzen. Die Animation funktioniert, jedoch will ich jetzt einen Keylistener einbauen, der das Rechteck über die Pfeiltasten steuert.

Mein Problem liegt jetzt in der Verbindung des Listeners, der in der JFrame Klasse ist mit der Paint Klasse im JPanel. Könnt ihr mir da helfen, oder geht das viel einfacher? :) So sieht das Programm aus:

Code:
import java.awt.*; import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.*;

class Panel extends JPanel {
	
	
		private int x=0;
		private int y = 0;
		int richt;
		
		
		
		public void paintComponent(Graphics g)
		{
			super.paintComponent(g);
			g.fillRect(x, y, 20, 30);
			
			

		}
		
		
		public void paint()
		{
			if (richt==0)
			{
				x++;
				if(x == 800)
					richt = 1;
			}
			if (richt==1)
			{
				x--;
				if(x==0)
					richt =0;
			}
			
			if (richt==2)
			{
				y++;
				if(y==600)
					richt =3;
			}
			
			if (richt==3)
			{
				y--;
				if(y==0)
					richt =2;
			}
			
			repaint();
		
		}	
	
}


class Animator1 extends Thread 
{
	private Panel animPanel;
	private int del;

	public Animator1(Panel animPanel, int delay)
	{
		this.animPanel = animPanel;
		del = delay;
	}
	public synchronized void run()
	{
		while(true)
		{
			

			animPanel.paint();
			try
			{
				Thread.sleep(del);
			}
			catch(InterruptedException e) {}
		}
	}
	

}


class Fenster extends JFrame implements KeyListener {
	int richt;
	
	public Fenster(String Titel){
		
		this.setTitle(Titel);
		addKeyListener(this);

	}
	
		public void keyPressed(KeyEvent event) {
		if (event.getKeyCode() == KeyEvent.VK_ESCAPE ) {
			setVisible(false);
			
			System.exit(0);
		}	
		
		if (event.getKeyCode() == KeyEvent.VK_RIGHT  ) {
			richt=0;
		}	
		
		if (event.getKeyCode() == KeyEvent.VK_LEFT  ) {
			
			richt=1;
		}	
		
		
		if (event.getKeyCode() == KeyEvent.VK_DOWN  ) {
			
			richt=2;
			
		}	
		
		if (event.getKeyCode() == KeyEvent.VK_UP  ) {
			richt=3;
		}	
		
		
	}

	public void keyReleased(KeyEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	
	public void keyTyped(KeyEvent arg0) {
		// TODO Auto-generated method stub
		
	}


}

public class Test {
	
	public static void main(String[] args) {
		Fenster Fenster = new Fenster("Rechteck");
		Panel Ausgabe = new Panel();
		Animator1 Ani2 = new Animator1(Ausgabe,10);
		Fenster.getContentPane().add(Ausgabe);
		Fenster.setSize(800,600);
		Fenster.show();
		Ani2.start();
	
		
	}
	
}


Danke, Mr.Sado
 
G

Guest

Gast
Hallo,
hier ein Lösungsvorschlag:

Code:
public class Test {

   public static void main(String[] args) {
      Panel Ausgabe = new Panel();
      Fenster Fenster = new Fenster(Ausgabe,"Rechteck");
      Animator1 Ani2 = new Animator1(Ausgabe,10);
      Fenster.getContentPane().add(Ausgabe);
      Fenster.setBounds(100,100,800,400);
      Fenster.show();
      Ani2.start();
   }
}


import java.awt.*; import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.*;

class Panel extends JPanel {

      private int x=0;
      private int y = 0;
      int richt;

      public void paintComponent(Graphics g)
      {
         super.paintComponent(g);
         g.fillRect(x, y, 20, 30);
      }

      public void setRicht(int richt) {
        this.richt=richt;
      }

      public void paint()
      {
         if (richt==0)
         {
            x++;
            if(x == 800)           richt = 1;
         }
         if (richt==1)
         {
            x--;
            if(x==0)               richt =0;
         }

         if (richt==2)
         {
            y++;
            if(y==600)             richt =3;
         }

         if (richt==3)
         {
            y--;
            if(y==0)               richt =2;
         }

         repaint();

      }

}


import javax.swing.*;
import java.awt.event.*;

class Fenster extends JFrame implements KeyListener {
  private Panel panel = new Panel();;

   public Fenster(Panel panel, String Titel){

      this.setTitle(Titel);
      this.panel = panel;
      addKeyListener(this);

   }

      public void keyPressed(KeyEvent event) {
      if (event.getKeyCode() == KeyEvent.VK_ESCAPE ) {
         setVisible(false);

         System.exit(0);
      }

      if (event.getKeyCode() == KeyEvent.VK_RIGHT  ) {
         panel.setRicht(0);
      }

      if (event.getKeyCode() == KeyEvent.VK_LEFT  ) {
         panel.setRicht(1);
      }

      if (event.getKeyCode() == KeyEvent.VK_DOWN  ) {
         panel.setRicht(2);
      }

      if (event.getKeyCode() == KeyEvent.VK_UP  ) {
         panel.setRicht(3);
      }

   }

   public void keyReleased(KeyEvent arg0) {
      // TODO Auto-generated method stub
   }

   public void keyTyped(KeyEvent arg0) {
      // TODO Auto-generated method stub
   }
}



import javax.swing.*;

class Animator1 extends Thread
{
   private Panel animPanel;
   private int del;

   public Animator1(Panel animPanel, int delay)
   {
      this.animPanel = animPanel;
      del = delay;
   }
   public synchronized void run()
   {
      while(true)
      {

      animPanel.paint();
         try
         {
            Thread.sleep(del);
         }
         catch(InterruptedException e) {}
      }
   }


}



Grüße von Sunny
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P KeyListener + Animation AWT, Swing, JavaFX & SWT 2
P Animation läuft nicht korrekt AWT, Swing, JavaFX & SWT 8
Ernesto95 JavaFX Return Value nach Beendigung einer Animation AWT, Swing, JavaFX & SWT 15
H Simple Animation mit Swing AWT, Swing, JavaFX & SWT 2
DeBoiJoshua 2D-Grafik Gif Animation will nicht laden AWT, Swing, JavaFX & SWT 1
S JavaFX WebView zeigt keine Animation AWT, Swing, JavaFX & SWT 5
E showAndWait is not allowed during animation or layout processing Memory FX AWT, Swing, JavaFX & SWT 2
A 2D-Grafik Ruckelfreie Animation AWT, Swing, JavaFX & SWT 20
L JavaFX Animation, erst zeichnen dann anzeigen AWT, Swing, JavaFX & SWT 4
L JavaFX Animation für Panel wechsel AWT, Swing, JavaFX & SWT 3
J Java FX Koordinaten NACH Animation setzen, wie? AWT, Swing, JavaFX & SWT 9
Pr0m3theus Animation nach Event AWT, Swing, JavaFX & SWT 6
F JavaFX Timeline Animation soll X- und Y-Position während Animation ändern AWT, Swing, JavaFX & SWT 2
javampir 2D-Grafik Effizienz bei animation AWT, Swing, JavaFX & SWT 0
C Pixel-Rendering/Animation Performance in BufferedImage AWT, Swing, JavaFX & SWT 1
wolfgang63 JavaFX Animation, Kreise im vorgegebem Takt durchs Fenster laufen lassen AWT, Swing, JavaFX & SWT 3
P Ansatz für 2D Animation gesucht AWT, Swing, JavaFX & SWT 2
Thallius HHübsche Kopier Animation? AWT, Swing, JavaFX & SWT 5
L JPanel kleine "Animation" AWT, Swing, JavaFX & SWT 7
E Animation läuft nicht mehr flüssig AWT, Swing, JavaFX & SWT 8
E Warum macht die einfache Animation einen kleinen Fehler? AWT, Swing, JavaFX & SWT 14
B 2D-Grafik Dynamisches Erstellen von Images und deren Animation AWT, Swing, JavaFX & SWT 4
R Swing Komponenten bleiben bei Animation unsichtbar AWT, Swing, JavaFX & SWT 7
J GIF Animation AWT, Swing, JavaFX & SWT 2
B Swing Thread+Animation AWT, Swing, JavaFX & SWT 7
R Swing Animation mit JLayeredPane? AWT, Swing, JavaFX & SWT 8
K 3D-Grafik Animation AWT, Swing, JavaFX & SWT 4
U Gif Animation mit JLabel AWT, Swing, JavaFX & SWT 3
D 2D-Grafik Animation flackert AWT, Swing, JavaFX & SWT 8
R Polygon-Animation mit Darstellungsfehlern AWT, Swing, JavaFX & SWT 5
StupidAttack Animation, JComponent AWT, Swing, JavaFX & SWT 3
S SWT Rudimentäre Bild Animation AWT, Swing, JavaFX & SWT 3
C Animation auf einem JPanel AWT, Swing, JavaFX & SWT 3
A paintComponent() - Animation AWT, Swing, JavaFX & SWT 2
S Ich brauche eine Idee: Animation mit teil eines Bildes AWT, Swing, JavaFX & SWT 16
H "Animation" AWT, Swing, JavaFX & SWT 2
S Animation korrekt darstellen AWT, Swing, JavaFX & SWT 8
Developer_X Nach Animation Button adden AWT, Swing, JavaFX & SWT 3
Developer_X Swing JPanel-THE ANIMATION AWT, Swing, JavaFX & SWT 3
T JFrame und Scale-Animation AWT, Swing, JavaFX & SWT 8
M Animation berechnen AWT, Swing, JavaFX & SWT 4
M Animation auf JPanel per Knopfdruck AWT, Swing, JavaFX & SWT 12
P Problem bei Animation AWT, Swing, JavaFX & SWT 2
K Animation auf GUI AWT, Swing, JavaFX & SWT 3
R ruckelfreie animation AWT, Swing, JavaFX & SWT 8
T Animation will nicht trotz Thread. AWT, Swing, JavaFX & SWT 14
S animation Flackern trotz doppelpufferung wieso? AWT, Swing, JavaFX & SWT 2
S Animation geht nicht AWT, Swing, JavaFX & SWT 3
m@nu Animation in GlassPane: Performanceeinbruch JFrame maximiert AWT, Swing, JavaFX & SWT 17
rudi.schraml Animation von Robotern auf FactoryFloor - repaint()? AWT, Swing, JavaFX & SWT 7
J Animation - Runnable AWT, Swing, JavaFX & SWT 3
O Animation in einem JPanel AWT, Swing, JavaFX & SWT 2
H Animation startet nicht/ Thread AWT, Swing, JavaFX & SWT 6
N Animation nach einem bestimmten Ereignis starten lassen? AWT, Swing, JavaFX & SWT 4
A Problem mit Animation AWT, Swing, JavaFX & SWT 4
P JTextfield Text durch Keylistener verändern AWT, Swing, JavaFX & SWT 4
N Keylistener & JComboBox AWT, Swing, JavaFX & SWT 5
B Swing JButton mit KeyListener AWT, Swing, JavaFX & SWT 3
H KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
Fridolin111 Der KeyListener Löst kein event aus AWT, Swing, JavaFX & SWT 6
B KeyListener auf JFrame reagiert nicht AWT, Swing, JavaFX & SWT 8
N Mit KeyListener ein rechteck zeichnen AWT, Swing, JavaFX & SWT 9
S Swing JPanel nimmt keinen KeyListener an AWT, Swing, JavaFX & SWT 7
P JPanel KeyListener hinzufügen AWT, Swing, JavaFX & SWT 8
B Swing KeyListener auf Container? AWT, Swing, JavaFX & SWT 1
T Event Handling KeyListener reagiert nicht AWT, Swing, JavaFX & SWT 10
K KeyListener ohne JFrame AWT, Swing, JavaFX & SWT 9
C Keylistener funktioniert nicht AWT, Swing, JavaFX & SWT 1
T KeyListener funktioniert nicht wenn ich ein JButton hinzufüge AWT, Swing, JavaFX & SWT 1
A Event Handling Muss ich 'KeyListener' tasuend mal zufügen? AWT, Swing, JavaFX & SWT 7
S mit keylistener frame schliessen AWT, Swing, JavaFX & SWT 8
S Keylistener reagiert bei Buttons nicht. AWT, Swing, JavaFX & SWT 8
S KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 2
R KeyListener in mehreren Panels AWT, Swing, JavaFX & SWT 5
V Tastatur KeyListener für mehrere Buttons AWT, Swing, JavaFX & SWT 1
J JLabel Visible setzen in KeyListener AWT, Swing, JavaFX & SWT 13
X KeyListener AWT, Swing, JavaFX & SWT 0
L KeyListener für JDialog AWT, Swing, JavaFX & SWT 7
N KeyListener funktioniert nicht richitg AWT, Swing, JavaFX & SWT 4
Z SnakeGame Schlange per KeyListener bewegen! AWT, Swing, JavaFX & SWT 10
T KeyListener AWT, Swing, JavaFX & SWT 2
GianaSisters JFrame mit JInternalFrames, Keylistener-Problem AWT, Swing, JavaFX & SWT 9
7 KeyListener tastatur temporär blockieren AWT, Swing, JavaFX & SWT 7
7 AWT problem: KeyListener/ test im Label umändern AWT, Swing, JavaFX & SWT 4
B SWT Problem: Wie kann man für jede TableColumn einen eigenen KeyListener registrieren. AWT, Swing, JavaFX & SWT 1
U Mouse + Keylistener AWT, Swing, JavaFX & SWT 12
K ActionListener mit KeyListener AWT, Swing, JavaFX & SWT 7
J JWindow und keylistener AWT, Swing, JavaFX & SWT 1
F JavaFX KeyListener zum Fenster öffnen/schließen AWT, Swing, JavaFX & SWT 9
A Swing KeyEvent mit KeyListener und KeyAdapter kürzer schreiben AWT, Swing, JavaFX & SWT 7
D JTextArea auf KeyListener Command AWT, Swing, JavaFX & SWT 6
C KeyListener AWT, Swing, JavaFX & SWT 5
Doopy Event Handling KeyListener funktioniert nach Restart nicht mehr AWT, Swing, JavaFX & SWT 7
S KeyListener geht nicht AWT, Swing, JavaFX & SWT 12
C Swing KeyListener in JPanel AWT, Swing, JavaFX & SWT 2
A KeyListener Button wechseln & Programm beenden AWT, Swing, JavaFX & SWT 4
M Frage zu KeyListener bzgl. JApplet AWT, Swing, JavaFX & SWT 3
H Bild mit KeyListener verschieben AWT, Swing, JavaFX & SWT 2
C JTextField KeyListener AWT, Swing, JavaFX & SWT 6
Y KeyListener, GUI Thread, repaint AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben