Programmanzeige

Ich habe ein Programm geschrieben .
Wenn ich auf run klicke passiert nichts wenn ich dann aber über den run-button gehe steht da
already running.

Was soll ich dagegen tun?
 
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Reactor implements ActionListener {

	JButton[] btns = new JButton[25];
	int punktzahl = 0;
	int schwierigkeit = 5;
	int sekundenzähler = 0;
	int limit = 10000;
	int wartezeit = 1000;
	int high = 26;
	int low = 1;
	int mommentaneZahl = 12;
	int spielfeldgröße = 25;
	int spielfeldlänge = (int) Math.sqrt(spielfeldgröße);
	boolean start = false;

	public Reactor() {

		initializeButtons();
		JFrame f = new JFrame();
		JPanel panel = new JPanel();
		JPanel spielfeld = new JPanel();
		panel.setLayout(new BorderLayout());
		spielfeld.setLayout(new GridLayout(spielfeldlänge, spielfeldlänge));

		for (int zeile = 0; zeile < spielfeldgröße; zeile++) {

			spielfeld.add(btns[zeile]);

			btns[zeile].addActionListener(this);
			btns[zeile].setBackground(Color.WHITE);
			btns[zeile].setText("" + (zeile) + "");
			btns[zeile].setActionCommand("" + zeile + "");

		}
		btns[12].setBackground(Color.RED);
		panel.add(spielfeld, BorderLayout.CENTER);
		f.getContentPane().add(panel);
		f.setVisible(true);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.pack();
		f.setLocationRelativeTo(null);

	}

	private void initializeButtons() {
		for (int a = 0; a < spielfeldgröße; a++) {
			btns[a] = new JButton(" ");
		}
		while (start = true) {
			while (sekundenzähler < limit) {
				sekundenzähler++;
				try {
					Thread.sleep(1000);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}

	@Override
	public void actionPerformed(ActionEvent arg0) {

		start = true;

		String gedrückteZahl = arg0.getActionCommand();

		if (gedrückteZahl.equals(btns[mommentaneZahl])) {

			punktzahl++;

			if (punktzahl > 5) {
				int zufallszahlextra1 = (int) (Math.random() * (spielfeldgröße + 1));
				btns[zufallszahlextra1].setBackground(Color.BLUE);
			}
			if (punktzahl > 10) {
				int zufallszahlextra2 = (int) (Math.random() * (spielfeldgröße + 1));
				btns[zufallszahlextra2].setBackground(Color.GREEN);
			}
			if (punktzahl > 15) {
				int zufallszahlextra3 = (int) (Math.random() * (spielfeldgröße + 1));
				btns[zufallszahlextra3].setBackground(Color.YELLOW);
			}
			if (punktzahl > 20) {
				int zufallszahlextra4 = (int) (Math.random() * (spielfeldgröße + 1));
				btns[zufallszahlextra4].setBackground(Color.ORANGE);
			}
			if (punktzahl > 25) {
				int zufallszahlextra5 = (int) (Math.random() * (spielfeldgröße + 1));
				btns[zufallszahlextra5].setBackground(Color.BLACK);
			}
			btns[mommentaneZahl].setBackground(Color.WHITE);
			int zufallszahl = (int) (Math.random() * (spielfeldgröße + 1));
			btns[zufallszahl].setBackground(Color.RED);
			mommentaneZahl = zufallszahl;
			sekundenzähler = 0;
		}

		else {
			for (int zeile = 0; zeile < spielfeldgröße; zeile++) {

				btns[zeile].removeActionListener(this);
				start = false;

			}
		}

	}

	public static void main(String[] args) {
		Reactor re = new Reactor();

	}
}
 

knilch

Bekanntes Mitglied
Nur mal kurz drüber geflogen:
Die Methode initializeButtons() wird als erste aufgerufen. In dieser steht:
Java:
...
   while (start = true) {
....
...
   }
...
das ist schon mal falsch. while(start = true). hier wird eine Zuweisung gemacht. Sollte eigentlich sein:
Java:
while (start == true) {
}
was dann der rest des Programms macht hab ich mal nicht angeschaut...
 

Neue Themen


Oben