Buttondrücke werden nicht gezählt

  • Themenstarter Themenstarter blacky23
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
B

blacky23

Gast
Hallo!

ich hab ein programm geschrieben, wo sich der hintergrund von einem Fenster imm wechselt und wenn der rot ist muss ich den roten button drücken und wenn grün den grünen.

Mein Problem: es zählt nur hoch, wenn ich keinen button drücken, den rest ignoriert es - warum?

Java:
private boolean pressed = false;

if(!pressed) // wenn pressed false dann gehts in die if rein, oder?
{
.....
}

Der code:
Java:
package uebung002_reaction;

import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.awt.event.*;

public class MainFrame extends JFrame {
  private final static int RAND_BEGIN = 600;
  private final static int RAND_OFFS = 500;
  
  private JPanel contentPane;
  private JPanel panel_button;
  private javax.swing.Timer timer_change;
  private JButton button_green;
  private JButton button_red;
  private Random random1;
  private int right;
  private int falsch;
  private int tmp = 5;
  private int missed;
  private boolean pressed = false;
  
  public MainFrame() {
    try {
      setDefaultCloseOperation(EXIT_ON_CLOSE);
      FrameInit();
    }
    catch (Exception exception) {
      exception.printStackTrace();
    }
  }

  /**
   * Component initialization.
   *
   * @throws java.lang.Exception
   */
  private void FrameInit() throws Exception {
    contentPane = (JPanel) getContentPane();
    contentPane.setLayout(new BorderLayout());
    setSize(new Dimension(400, 300));
    setTitle("Frame Title");
    
    panel_button = new JPanel();
    button_green = new JButton("green");
    button_red = new JButton("red");
    
    panel_button.setLayout(new FlowLayout());
    
    panel_button.add(button_green);
    panel_button.add(button_red);
    
    panel_button.setBackground(Color.GREEN);
    
    contentPane.add(panel_button,BorderLayout.CENTER);
    
    Button_ActionListener bal = new Button_ActionListener();
    
    button_green.addActionListener(bal);
    button_red.addActionListener(bal);
    
    random1 = new Random();
    
    timer_change = new javax.swing.Timer(getRandom(), new Timer_ActionListener());
    
    timer_change.start();
   
  }
  
  private void buttonHandler(ActionEvent ae) {
	 if(!pressed)
	 {
	  if(ae.getSource() == button_green)
	  {
		 button_green.setEnabled(false);
		 button_red.setEnabled(false);
		 if(panel_button.getBackground() == Color.GREEN)
		 {
		    right++;
		 }
		 else
		 {
			falsch++; 
		 }
	  }
	  else
	  {
		  button_green.setEnabled(false);
		  button_red.setEnabled(false);
		  if(panel_button.getBackground() == Color.red)
		  {
			 right++;
		  }
		  else
		  {
		     falsch++; 
		  }
	  }
	  pressed=true;
	 }
	 
  }
 
  
  private void timerHandler(ActionEvent ae) {
	  button_green.setEnabled(true);
	  button_red.setEnabled(true);
	  changeColor();
	  timer_change.setDelay(getRandom());
	  
	  if(!pressed)
	  {
		  missed++;
	  }
	  pressed = false;
  }
  
  private void changeColor() {
	  if(panel_button.getBackground() == Color.GREEN)
	  {
		  panel_button.setBackground(Color.RED);
	  }
	  else
	  {
		  panel_button.setBackground(Color.GREEN);
	  }
  }
  
  private int getRandom() {
	 
	  return (random1.nextInt(RAND_BEGIN) + RAND_OFFS);
  }
  
  private void ausgabe(){
	  System.out.println("falsch:" + falsch);
	  System.out.println("richtig:" + right);
	  System.out.println("missed:" + missed);
  }
  
  private class Timer_ActionListener implements ActionListener {
	  public void actionPerformed(ActionEvent ae) {
		  if(tmp != 0) {
			timerHandler(ae);  
			tmp--;
		  }
		  else
		  {	  
			timer_change.stop();
		    ausgabe();
		  }
		  
	  }
  }

  private class Button_ActionListener implements ActionListener {
	  public void actionPerformed(ActionEvent ae) {
		  pressed = true;
		  buttonHandler(ae); 
	  }
  }
}

mfg

blacky
 
Hallo!

ich hab ein programm geschrieben, wo sich der hintergrund von einem Fenster imm wechselt und wenn der rot ist muss ich den roten button drücken und wenn grün den grünen.

Mein Problem: es zählt nur hoch, wenn ich keinen button drücken, den rest ignoriert es - warum?

Java:
private boolean pressed = false;

if(!pressed) // wenn pressed false dann gehts in die if rein, oder?
{
.....
}

Ich hab mir jetzt nur diese Abprüfung angeschaut und die ist hier true.
Da pressed == false und !pressed ist dann entsprechend true.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben