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:
Danke, Mr.Sado
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