Ein paar Fragen zu Methodenaufrufen(java.awt)

Azazel

Mitglied
Moin,

Ich möchte eine kleine Anwendung schreiben.
Es soll eine Figur(Rectangle) sein, wenn man d drückt, soll noch eine 2. Figur gezeichnet werden.
Das ganze realisiere ich mit den paint(Graphics args); und KeyTyped(...); Methoden und zeichne auf dem Frame.

Das ganze sieht dann in etwa so aus:

Java:
public class Startklasse extends Frame implements KeyListener{
    private static final long serialVersionUID = 1L;
    private boolean d_pressed = false;

    public Startklasse(){
        setSize(300,200);
        setTitle("Das Spiel");
        Image bild = Toolkit.getDefaultToolkit().getImage("Bank.png");
        setIconImage(bild);
        setBackground(Color.darkGray);
        setForeground(Color.WHITE);
        setFont(new Font(Font.MONOSPACED,Font.BOLD,20));
       
        setVisible(true);
        try{
            Thread.sleep(5000);
        }catch(InterruptedException e){}
        dispose();
    }
   
    public void paint(Graphics g){
        super.paint(g);
       
        if(d_pressed == false){
        g.setColor(new Color(200,100,100));
        g.fillRect(50, 50, 50, 100);
        }else{
            g.fillRect(0, 50, 50, 100);
        }
    }
   
public static void main(String[] args){
    new Startklasse();
}

@Override
public void keyTyped(KeyEvent e) {
    int key = e.getKeyCode();
    if(key == (int)'d'){
        d_pressed  = true;
        repaint();
    }
}
...

Ein paar Fragen dazu.

1. Wieso klappt das nicht?
- Es wird zwar gezeichnet, aber beim Klicken auf 'd' passiert nichts.

2. Ist das ein guter Anfang um einen kleinen 2d Plattformer zu basteln?

danke
 
Dir fehlt noch, dass du den KeyListener bei dem Frame registrierst. Also:
Java:
addKeyListener(this);
Wenn du schon die keyTyped Methode verwendest dann prüfst du so auf ein getipptes Zeichen:
Java:
if (e.getKeyChar() == 'd') {

Zu deiner zweiten Frage: Kommt jetzt darauf an was du genau machen möchtest. AWT ist alt. Der Nachfolger wäre Swing. Dieser ist auch veraltet, jetzt gibt es JavaFx.
 

Neue Themen


Zurück
Oben