erstmal vorweg: ich bin noch ein ziemlicher Java-Noob. hab ende August damit angefagen, als wir in der Schule damit angefangen haben...daher entschuldigt bitte, falls ich etwas ziemlich unqualifiziertes schreibe oder einfach "umständlich" programmiere.
Nun zu meinem Problem: Ich hab mir selber einen Generator geschrieben, der mir zufällig versch. Rennzusammensetzungen für Need for Speed generiert. An einer stelle möchte den befehl
benutzen, um ein Fenster wieder zu schließen. allerdings klappt das nicht. Die Fenster bleiben geöffnet.
Da das ganze in einer Art schleife geschrieben ist, die so lange läuft, bis eine passende zahl generiert wurde, kommt es schonmal vor, dass sich dann 20Fenster öffnen, aber nicht wieder schließen.
Ich weis nicht, ob der befehl an der stelle nicht läuft oder ich irgendwo anders einen Fehler gemacht habe. daher brauche ich eure hilfe...
Hier mal die Problem-Klasse (falls ihr die anderen Klassen auch braucht, bitte bescheid sagen)
Der Problem-Befehl befindet sich in Zeile 82!
Streckenwahl-Klasse
Einstellungen-Klasse
Ausgabe-Klasse
Nun zu meinem Problem: Ich hab mir selber einen Generator geschrieben, der mir zufällig versch. Rennzusammensetzungen für Need for Speed generiert. An einer stelle möchte den befehl
Java:
setVisible(false);
Da das ganze in einer Art schleife geschrieben ist, die so lange läuft, bis eine passende zahl generiert wurde, kommt es schonmal vor, dass sich dann 20Fenster öffnen, aber nicht wieder schließen.
Ich weis nicht, ob der befehl an der stelle nicht läuft oder ich irgendwo anders einen Fehler gemacht habe. daher brauche ich eure hilfe...
Hier mal die Problem-Klasse (falls ihr die anderen Klassen auch braucht, bitte bescheid sagen)
Der Problem-Befehl befindet sich in Zeile 82!
Streckenwahl-Klasse
Java:
//Import von Paketen
import java.awt.*;
import java.awt.event.*;
public class Streckenwahl extends Frame {
public static void main(String[] args){
Streckenwahl s=new Streckenwahl ();
s.starte();
s.setSize(300,200);
s.setVisible (true);
}
Panel sued;
Panel center;
Button EndeKnopf = new Button("Beenden");
Button Start = new Button("Start");
public static Checkbox Rundkurs;
public static Checkbox Sprint;
public static Checkbox URL;
public static Checkbox StreetX;
public static Checkbox Drag;
public static Checkbox Drift;
public static Checkbox DownHill;
// Konstruktor (besondere Methode)
public Streckenwahl ()
{
setTitle ("Renn-Typen Auswahl");
sued = new Panel();
center = new Panel();
Rundkurs = new Checkbox("Rundkurs", true);
Sprint = new Checkbox("Sprint",true);
URL = new Checkbox("URL");
StreetX = new Checkbox ("StreetX", true);
Drag = new Checkbox ("Drag", true);
Drift = new Checkbox ("Drift");
DownHill = new Checkbox ("DownHill");
}
void starte()
{
setLayout (new BorderLayout());
sued.add(Start);
sued.add(EndeKnopf);
center.setLayout( new GridLayout(7,1));
center.add(Rundkurs);
center.add(Sprint);
center.add(URL);
center.add(StreetX);
center.add(Drag);
center.add(Drift);
center.add(DownHill);
add("Center",center);
add("South",sued);
//Schalter
Start.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Einstellungen ee=new Einstellungen ();
ee.starte();
ee.setSize(300,200);
ee.setVisible (true);
//setVisible(false);
}});
EndeKnopf.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
setVisible(false);
dispose();
System.exit(0);
}
});
}
}
Einstellungen-Klasse
Java:
//Import von Paketen
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
public class Einstellungen extends Frame {
Panel sued;
Panel center;
Button EndeKnopf = new Button("Beenden");
Button gen = new Button("Generate");
Button Zurueck = new Button ("Zurück");
Random generator;
static Checkbox ROUND;
static Checkbox ko;
static Checkbox KI;
static Checkbox civ;
static Checkbox reversed;
public int Track;
private int Gen;
// Konstruktor (besondere Methode)
public Einstellungen ()
{
setTitle ("NFS Race-Generator");
sued = new Panel();
center = new Panel();
generator = new Random();
ROUND = new Checkbox("mehr als 5 Runden");
ko = new Checkbox("Runden-KO zulassen",true);
KI = new Checkbox("KI-Schwierigkeit generieren",true);
civ = new Checkbox ("Verkehrsdichte generieren", true);
reversed = new Checkbox ("Streckenumkehr zulassen", true);
}
void starte()
{
setLayout (new BorderLayout());
sued.add(gen);
sued.add(Zurueck);
sued.add(EndeKnopf);
center.setLayout( new GridLayout(5,1));
center.add(ROUND);
center.add(ko);
center.add(KI);
center.add(civ);
center.add(reversed);
add("Center",center);
add("South",sued);
//Schalter
gen.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Ausgabe a=new Ausgabe (generator.nextInt(100)+1);
a.starte();
a.setSize(300,200);
a.setVisible (true);
setVisible(false);
}});
Zurueck.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Streckenwahl s=new Streckenwahl ();
s.starte();
s.setSize(300,200);
s.setVisible (true);
setVisible(false);
}});
EndeKnopf.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
setVisible(false);
dispose();
System.exit(0);
}
});
}
private int Strecke()
{
Gen = generator.nextInt(100)+1;
System.out.println("Generierte Zahl: " +Gen);
if(Gen<=31 && Streckenwahl.Rundkurs.getState()) //Prft ob Rundkurs generiert/ausgewhlt wurde
{
Track = Gen;
}
else
{
if(Gen<=54 && Streckenwahl.Sprint.getState()) //Prft ob Sprint generiert/ausgewhlt wurde
{
Track = Gen;
}
else
{
if(Gen<=65 && Streckenwahl.URL.getState()) //Prft ob URL generiert/ausgewhlt wurde
{
Track = Gen;
}
else
{
if(Gen<=73 && Streckenwahl.StreetX.getState()) //Prft ob StreetX generiert/ausgewhlt wurde
{
Track = Gen;
}
else
{
if(Gen<=83 && Streckenwahl.Drag.getState()) //Prft ob Drag generiert/ausgewhlt wurde
{
Track = Gen;
}
else
{
if(Gen<=94 && Streckenwahl.Drift.getState()) //Prft ob Drift generiert/ausgewhlt wurde
{
Track = Gen;
}
else
{
if(Gen<=100 && Streckenwahl.DownHill.getState()) //Prft ob DownHill generiert/ausgewhlt wurde
{
Track = Gen;
}
}
}
}
}
}
}
return Track;
}
}
Ausgabe-Klasse
Java:
//Import von Paketen
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
public class Ausgabe extends Frame {
Panel sued;
Panel center;
Button EndeKnopf;
Button Zurueck;
Button ReGen;
private Label Modus;
Random generator;
int Track;
int rounds;
int Gen;
static int typ;
static int ko;
// Konstruktor
public Ausgabe ()
{
setTitle ("Ergebnis");
generator = new Random();
sued = new Panel();
center = new Panel();
EndeKnopf = new Button("Beenden");
Zurueck = new Button ("Zurck");
ReGen = new Button ("ReGen");
Gen = generator.nextInt(100)+1;
System.out.println("Generierte Zahl: " +Gen);
if(Gen<=31 && Streckenwahl.Rundkurs.getState()) //Prft ob Rundkurs generiert/ausgewhlt wurde
{
Track = Gen;
}
else
{
if(Gen<=54 && Streckenwahl.Sprint.getState()) //Prft ob Sprint generiert/ausgewhlt wurde
{
Track = Gen;
}
else
{
if(Gen<=65 && Streckenwahl.URL.getState()) //Prft ob URL generiert/ausgewhlt wurde
{
Track = Gen;
}
else
{
if(Gen<=73 && Streckenwahl.StreetX.getState()) //Prft ob StreetX generiert/ausgewhlt wurde
{
Track = Gen;
}
else
{
if(Gen<=83 && Streckenwahl.Drag.getState()) //Prft ob Drag generiert/ausgewhlt wurde
{
Track = Gen;
}
else
{
if(Gen<=94 && Streckenwahl.Drift.getState()) //Prft ob Drift generiert/ausgewhlt wurde
{
Track = Gen;
}
else
{
if(Gen<=100 && Streckenwahl.DownHill.getState()) //Prft ob DownHill generiert/ausgewhlt wurde
{
Track = Gen;
}
else
{
Restart();
}
}
}
}
}
}
}
if(Einstellungen.reversed.getState()) //Prft ob Streckenumkehrung Aktiv ist
{
typ = generator.nextInt(50);
}
else
{
typ = 1;
}
if(Einstellungen.ko.getState()) // Prft ob Runden-KO zugelassen wird
{
ko = generator.nextInt(50);
}
else
{
ko = 50;
}
if(ko<=15) //Prft ob Rennen im KO-Modus gefahren wird
{
rounds = 3;
}
else
{
if(Einstellungen.ROUND.getState()) //Prft ob Runden generiert werden sollen
{
rounds = generator.nextInt(4)+7;
}
else
{
rounds = generator.nextInt(4)+2;
}
}
Modus = Labels.Modus(Track);
}
void starte()
{
setLayout (new BorderLayout ());
center.setLayout(new GridLayout(6,1));
center.add(Objekte.Car(generator.nextInt(20)+1));
center.add(Modus);
center.add(Objekte.Track(Track));
if(Track<=31) // Prft auf Rundkurs
{
center.add(Objekte.Rounds(rounds));
}
else
{
if(Track>=55 && Track<=73) //Prft auf URL
{
center.add(Objekte.Rounds(rounds));
}
else
{
if(Track>=84 && Track<=94)
{
center.add(Objekte.Rounds(rounds));
}
}
}
if(Einstellungen.civ.getState() && Track<55) //Prft ob Verkehr aktiviert wurde
{
center.add(Objekte.Civ(generator.nextInt(4)+1));
}
else
{
if(Einstellungen.civ.getState() && Track>=95)
{
center.add(Objekte.Civ(generator.nextInt(4)+1));
}
}
if(Einstellungen.KI.getState()) //Prft ob Bots generiert werden sollen
{
center.add(Objekte.KI(generator.nextInt(3)+1));
}
sued.add(ReGen);
sued.add(Zurueck);
sued.add(EndeKnopf);
add("Center",center);
add("South",sued);
//Schalter
Zurueck.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Einstellungen m=new Einstellungen ();
m.starte();
m.setSize(300,200);
m.setVisible (true);
setVisible(false);
}
});
ReGen.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Ausgabe a=new Ausgabe ();
a.starte();
a.setSize(300,200);
a.setVisible (true);
setVisible(false);
}
});
EndeKnopf.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
setVisible(false);
dispose();
System.exit(0);
}
});
}
private void Restart()
{
Ausgabe a=new Ausgabe ();
a.starte();
a.setSize(300,200);
a.setVisible (true);
setVisible(false);
}
}
Zuletzt bearbeitet: