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?
Der code:
mfg
blacky
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