KeyListener i strzelanie

0

Witam,
mam dwa pytania:

  1. Czemu po nacisnięciu spacji ilość pocisków ( na ekranie) się nie zmniejsza?
  2. Czy da się zrobić tak, że gdy nacisnę "r" to najpierw pojawi sie tekst "przeładowanie", a dopiero potem program "poczeka" 2 sekundy?
    Z góry dzięki za wszystkie odpowiedzi

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

public class strzal extends JFrame implements KeyListener {

public static void main(String[] args) {
    new strzal();
}

    int pociski = 9;
    JTextField keyText = new JTextField(80);
    JLabel keyLabel = new JLabel ( "Naciśnij przycisk strzał");
    JLabel kontrola;
    Font normalFont = new Font("Times New Roman", Font.PLAIN, 20);

strzal (){

keyText.addKeyListener(this);
setSize(400, 400);

kontrola  = new JLabel("SPACJA - strzał, R - przeładuj, pociski = " + pociski );

setVisible(true);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
BorderLayout layout = new BorderLayout();
setLayout(layout);
add(keyLabel, BorderLayout.NORTH);
add(keyText, BorderLayout.CENTER);
add(kontrola, BorderLayout.SOUTH);
kontrola.setFont(normalFont);

}

@Override
public void keyPressed(KeyEvent e) {
    int keyCode = e.getKeyCode();
    if(keyCode == KeyEvent.VK_SPACE) {
        keyLabel.setText("Nacisnąłeś przycisk strzał");
        pociski--;

    }else if(keyCode == KeyEvent.VK_R) {
        keyLabel.setText("przeładowanie");

        pociski = 9;
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    }else {
        keyLabel.setText("Zły przycisk");
    }

}

@Override
public void keyReleased(KeyEvent arg0) {

}

@Override
public void keyTyped(KeyEvent arg0) {

//niepotrzebna
}

}

1
  1. Nie robisz update'a labela wyświetlającego ilość pocisków.
  2. Powinno się dać. Poszukaj sobie w sieci o klasie Timer z pakietu swing

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0