Ersmal hallo, bin neu hier und lerne schon seit einiger zeit Java.
Ich will einen Jpanel ein KeyListener zuweisen, der dann beim drücken der pfeiltasten eine methode ausführt. es passier jedoch nichts, eine fehlermeldung gibt es auch nicht. ???:L
hier der Code:
Board.java
Tetris.java
hat vielleicht jemand ne Idee was ich falsch gemacht habe. die methoden links(), rechts() runter() funktionieren einwandfrei.
Ich will einen Jpanel ein KeyListener zuweisen, der dann beim drücken der pfeiltasten eine methode ausführt. es passier jedoch nichts, eine fehlermeldung gibt es auch nicht. ???:L
hier der Code:
Board.java
Java:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Board extends JPanel {
private static final long serialVersionUID = 5567014969127946769L;
public byte[][] Feld;
public byte Feld_breite;
public byte Feld_hoehe;
public int Feld_groesse;
public GameThread gamethread;
public Board (byte Feld_breite, byte Feld_hoehe, int Feld_groesse)
{
this.Feld_breite = Feld_breite;
this.Feld_hoehe = Feld_hoehe;
this.Feld_groesse = Feld_groesse;
Feld = new byte[Feld_breite][Feld_hoehe];
gamethread = new GameThread(500, this);
gamethread.start();
addKeyListener( new KeyAdapter()
{
public void keyTyped(KeyEvent evt)
{
switch (evt.getKeyCode())
{
case KeyEvent.VK_LEFT:
gamethread.form.links();
break;
case KeyEvent.VK_RIGHT:
gamethread.form.rechts();
break;
case KeyEvent.VK_DOWN:
if(gamethread.form.runter()==false)
gamethread.neueForm();
break;
default:
break;
}
}
} );
}
public void paint (Graphics g)
{
for (int i = 0; i<Feld_breite; i++)
for (int j = 0; j<Feld_hoehe; j++)
{
switch (Feld[i][j])
{
case 0 : g.setColor(Color.WHITE); break;
case 1 : g.setColor(Color.BLUE); break;
case 2 : g.setColor(Color.GREEN); break;
case 3 : g.setColor(Color.YELLOW); break;
case 4 : g.setColor(Color.RED); break;
case 5 : g.setColor(Color.ORANGE); break;
case 6 : g.setColor(Color.CYAN); break;
case 7 : g.setColor(Color.PINK); break;
default: break;
}
if(Feld[i][j]==0)
g.fillRect(i*Feld_groesse, j*Feld_groesse, Feld_groesse, Feld_groesse);
else
g.fill3DRect(i*Feld_groesse, j*Feld_groesse, Feld_groesse, Feld_groesse, true);
}
}
}
Tetris.java
Java:
import javax.swing.*;
public class Tetris extends JFrame {
private static final long serialVersionUID = -8185750808184067061L;
Board board;
public Tetris()
{
setSize(300,600);
board = new Board((byte)8,(byte)14,30);
add(board);
}
public static void main(String[] args) {
Tetris tetris = new Tetris();
tetris.setVisible(true);
}
}
hat vielleicht jemand ne Idee was ich falsch gemacht habe. die methoden links(), rechts() runter() funktionieren einwandfrei.