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