Hallo,
ich möchte ein Spiel programmieren bei dem es 9 Labels gibt und eines immer rot aufleuchtet und man dann eine entsprechende zahlentaste drücken soll, also eine Art Reaktionsspiel.
Mein Problem ist, dass der KeyListener nicht mehr funktioniert wenn ich den Startbutton klicke.
Ich denke es ist wegen dem Thread vom Timer , ich weis aber nicht wie ich das Problem lösen soll. Hier mein Code:
LG M4_ix
ich möchte ein Spiel programmieren bei dem es 9 Labels gibt und eines immer rot aufleuchtet und man dann eine entsprechende zahlentaste drücken soll, also eine Art Reaktionsspiel.
Mein Problem ist, dass der KeyListener nicht mehr funktioniert wenn ich den Startbutton klicke.
Ich denke es ist wegen dem Thread vom Timer , ich weis aber nicht wie ich das Problem lösen soll. Hier mein Code:
Java:
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class test {
static boolean a = true;
static int i = 0;
static JFrame jf1 = new JFrame("Reaktionsspiel");
static Timer timer = new Timer();
public static void main(String[] args) {
// TODO Auto-generated method stub
JLabel jl1 = new JLabel("1");
JLabel jl2 = new JLabel("2");
JLabel jl3 = new JLabel("3");
JLabel jl4 = new JLabel("4");
JLabel jl5 = new JLabel("5");
JLabel jl6 = new JLabel("6");
JLabel jl7 = new JLabel("7");
JLabel jl8 = new JLabel("8");
JLabel jl9 = new JLabel("9");
JPanel jp1 = new JPanel();
JPanel jp3 = new JPanel();
JPanel jp2 = new JPanel();
JButton jb1 = new JButton("Spiel starten");
JButton jbclose = new JButton("Schließen");
JLabel jlo = new JLabel();
jf1.setVisible(true);
jf1.setSize(500, 500);
jf1.getContentPane().setBackground(Color.GREEN);
jf1.setLayout(new GridLayout(4,3));
jf1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf1.add(jp1);
jf1.add(jp2);
jf1.add(jp3);
jp1.add(jb1);
jp2.add(jbclose);
jp3.add(jlo);
jf1.add(jl1);
jf1.add(jl2);
jf1.add(jl3);
jf1.add(jl4);
jf1.add(jl5);
jf1.add(jl6);
jf1.add(jl7);
jf1.add(jl8);
jf1.add(jl9);
jl1.setOpaque(true);
jl2.setOpaque(true);
jl3.setOpaque(true);
jl4.setOpaque(true);
jl5.setOpaque(true);
jl6.setOpaque(true);
jl7.setOpaque(true);
jl8.setOpaque(true);
jl9.setOpaque(true);
jf1.addKeyListener(new KeyListener() {
public void keyPressed(KeyEvent e) {
System.out.println(e.getKeyChar() + " pressed");
if(i==1 && e.getKeyChar() ==1 ){
System.out.println("Ok");
}else{
timer.cancel();
}
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
}
});
jb1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
TimerTask timerTask = new TimerTask() {
public void run() {
i =(int) (Math.random() * 9) + 1;
if(i==1){
jl1.setBackground(Color.RED);
}else{
jl1.setBackground(Color.GREEN);
}
if(i==2){
jl2.setBackground(Color.RED);
}else{
jl2.setBackground(Color.GREEN);
}
if(i==3){
jl3.setBackground(Color.RED);
}else{
jl3.setBackground(Color.GREEN);
}
if(i==4){
jl4.setBackground(Color.RED);
}else{
jl4.setBackground(Color.GREEN);
}
if(i==5){
jl5.setBackground(Color.RED);
}else{
jl5.setBackground(Color.GREEN);
}
if(i==6){
jl6.setBackground(Color.RED);
}else{
jl6.setBackground(Color.GREEN);
}
if(i==7){
jl7.setBackground(Color.RED);
}else{
jl7.setBackground(Color.GREEN);
}
if(i==8){
jl8.setBackground(Color.RED);
}else{
jl8.setBackground(Color.GREEN);
}
if(i==9){
jl9.setBackground(Color.RED);
}else{
jl9.setBackground(Color.GREEN);
}
}
};
timer.schedule(timerTask,1000, 750);
}
});
jbclose.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
System.exit(1);
}
});
}
}
LG M4_ix