Aus einer Klasse eine andere laden

SiDeu

Aktives Mitglied
Hallo an alle!
Ich habe mir ein kleines Dartspiel programmiert danach habe ich einen Abspann für den Gewinner programmiert.
Nun will ich wenn der Gewinner festliegt der Abspann aufgerufen wird es zeigt aber immer Fehler an ;(
Bei Spiel zeigt es den Fehler bei Zeile 174 und bei Gewonnen bei 58 an!
Hier die Spiel Klasse

Java:
package dart;

import java.util.ArrayList;
import javax.swing.JOptionPane;

public class Spiel {

	public static void main(String[] args) {
		int Mittspieler;
		int Punkte = 301;
		int anzahlWuerfe;
		String Gewinner = "";
		int besterWurf;
		int schlechtesterWurf;

		// Liste mit Objekten
		ArrayList<Person> Spieler = new ArrayList<Person>();

		// Endlosschleife bis eine Zahl eingegeben wurde
		while (true) {
			try {
				String Eingabe = JOptionPane
						.showInputDialog("Wieviele Mittspieler");
				if (Eingabe == null) { System.exit(0);}
				Mittspieler = Integer.parseInt(Eingabe);
				break;
			} catch (Exception e) {
				System.out.println("Das war keine Zahl!");
				JOptionPane.showMessageDialog(null, "Das war keine Zahl");
				
			}
		}

		// hier folgt eine ausgabe
		System.out.println("Danke für die Eingabe");
		JOptionPane.showMessageDialog(null, "Danke für die Eingabe");

		// hier werden die Personen angelegt mit Anzahl der Eingabe Mitspieler
		for (int i = 1; i <= Mittspieler; i++) {
			String Vorname = JOptionPane.showInputDialog("Vorname ");
			String Nachname = JOptionPane.showInputDialog("Nachname ");
			Person person = new Person(Vorname, Nachname, Punkte);

			Spieler.add(person);
		}

		label: do {

			for (Person ob : Spieler) {

				// Aktueler Punktestand zu beginn der Runde
				int Startpunkte = ob.getPunkte();

				label2: for (int w = 1; w <= 3; w++) {

					boolean richtigeZahl = false;
					int AktuellePunkte = 0;
					String Geworfen = null;
					
					
					do {
						while (true) {
							try {
								Geworfen = JOptionPane.showInputDialog("Wurf"
										+ w + " " + ob.getVorname() + " "
										+ ob.getNachname());

								AktuellePunkte = Integer.parseInt(Geworfen);
								break;
							} catch (Exception e) {
								System.out.println("Das war keine Zahl!");
								JOptionPane.showMessageDialog(null,
										"Das war keine Zahl");
							}
						}
						if (checkWurf(AktuellePunkte)) {
							richtigeZahl = true;
						}

						// Prüft ob Wurf gültig war wird gantz unten als ein
						// Objekt übergeben mit
						// den Werten true ore false ob checkWurf die Aktuellen
						// Punkte bekommt
						// setzt dann den Wert richtige Zahl auf true

						else {
							System.out.println("Kann nicht sein");
							JOptionPane.showMessageDialog(null, "Kann"
									+ " nicht" + " sein");
						}
					} while (richtigeZahl == false);

					// läuft die else so lange durch bis sie oben beim if true
					// ergibt

					if (ob.getPunkte() - AktuellePunkte == 0) {

						// Gewinnername wird declariert
						Gewinner = ob.getVorname() + " " + ob.getNachname();
						anzahlWuerfe = ob.getAnzahlWuerfe();
						besterWurf = ob.getHoechsterWurf();
						schlechtesterWurf = ob.getNidrigsterWurf();
						break label;
					}

					
					else if (ob.getPunkte() - AktuellePunkte < 0) {

						// Punkte wieder aufaddieren
						ob.setPunkte(Startpunkte);

						System.out.println("Sie haben überworfen Sie haben"
								+ "jetzt" + " wieder" + " " + ob.getPunkte()
								+ " " + "Punkte" + " " + ob.getVorname() + " " + ob.getNachname());
						JOptionPane.showMessageDialog(null,
								"Sie haben überworfen Sie haben" + "jetzt "
										+ "wieder" + " " + ob.getPunkte() + " "
										+ "Punkte" + " " + ob.getVorname() + " " + ob.getNachname());
						break label2;

					}

					ob.setGeworfen(Integer.parseInt(Geworfen));
				}
					
					
					
				System.out.println(ob.getVorname() + " " + ob.getNachname()
						+ " " + "hat jetzt noch" + " " + ob.getPunkte() + " "
						+ "Punkt(e)");
				JOptionPane.showMessageDialog(null,
						ob.getVorname() + " " + ob.getNachname() + " "
								+ "hat jetzt noch" + " " + ob.getPunkte() + " "
								+ "Punkte");
				
				
				int Wurfgesamt;
				Wurfgesamt = Startpunkte - ob.getPunkte();
				if (Wurfgesamt > ob.getHoechsterWurf()) {
					ob.setHoechsterWurf(Wurfgesamt);
				}
				
					int Wurfgesamt2;
					Wurfgesamt2 = Startpunkte - ob.getPunkte();
					if (Wurfgesamt2 < ob.getNidrigsterWurf()) {
						ob.setNidrigsterWurf(Wurfgesamt2);
					}
	

			}

		} while (true);
		
		anzahlWuerfe = anzahlWuerfe + 1;
		System.out.println("Spiel beendet. " + " " + Gewinner + " "
				+ "hat gewonnen" + " " + " " + "Mit Wurf" + " " + anzahlWuerfe
				+ " " + "Der Höchste Wurf in diesem Spiel war:  " + besterWurf
				+ " " + "Der nidrigste Wurf war" + " " + schlechtesterWurf);

		JOptionPane.showMessageDialog(null, "Spiel beendet." + Gewinner + " "
				+ "hat gewonnen" + " " + "Mit Wurf" + " " + anzahlWuerfe);

		







                           //Methode von Gewonnen aufrufen hier zeigt es den Fehler an
		
		Gewonnen SpielGewonnen = new Gewonnen();
		SpielGewonnen.drawImage();

		
		




	
	}


	public static boolean checkWurf(int AktuellePunkte) {
		if (AktuellePunkte > 60) {
			return false;
		}
		int[] zahlen = { 23, 25, 29, 31, 37, 41, 43, 47, 49, 53, 55, 59 };
		for (int i = 0; i < zahlen.length; i++) {
			if (zahlen[i] == AktuellePunkte) {
				return false;
			}

		}
		return true;
	}
}

Hier die Gewonnen Klasse

Java:
package dart;

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

public class Gewonnen extends JFrame implements ActionListener {
	private JButton Knopf;

	
	
	public Gewonnen() {
		super("Gewonnen");
		JPanel Platte = new JPanel();
		Platte.setLayout(new FlowLayout());
		Platte.setBackground(Color.black); // <--Schwartzer Hintergrund
		Knopf = new JButton("Drück mich!");
		Knopf.addActionListener(this);
		Box Oben = Box.createHorizontalBox();
		Oben.setPreferredSize(new Dimension(400, 100));
		Platte.add(Oben);
		Platte.add(Knopf);
		setContentPane(Platte);
	}

	public void actionPerformed(ActionEvent Ereignis) {

		drawImage();
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		Gewonnen Rahmen = new Gewonnen();
		Rahmen.setSize(400, 300);
		Rahmen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Rahmen.setVisible(true);
	}

	// Methode
	public void drawImage() {
		Graphics Stift = getGraphics();
		Dimension Groesse = getSize();
		int Breite = Groesse.width;
		int Hoehe = Groesse.height;
		for (int i = 0; i < 200; i++) {

			final int FMax = 9;
			Color[] Farbe = { Color.black, Color.gray, Color.white,
					Color.cyan,
					Color.magenta, Color.yellow, Color.red, Color.green,
					Color.blue };








                                        // hier zeigt es den anderen Fehler an

			Stift.setColor(Farbe[(int) (Math.random() * FMax)]);
			Stift.setFont(new Font("Arial", Font.PLAIN,
					(int) (Math.random() * 40)));
			Stift.drawString("Gewonnen", (int) (Math.random() * Breite),
					(int) (Math.random() * Hoehe));
			try {
				Thread.sleep(10);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}
	}
}
 
Die Zeilen stimmen nicht genau überein weil ich da für mich selber Erklärungen reingeschrieben habe aber sie nicht gepostet habe!

Bei spiel ist er in 174 bei gewonnen in 58

11-03-2014 14-40-17.jpg
 
Ich hab es mal debuggt ...

Klarer Fall:

Wenn das Fenster noch nicht sichtbar ist, gibt die Methode "getGraphics()" null zurück:

Creates a graphics context for this component. This method will return null if this component is currently not displayable.

Heißt für dich:

Bevor du "drawImage()" aufrufst, musst du "Gewonnen.setVisible(true)" aufrufen. Dann klappt es bei mir ohne Probleme!
 
Hallo HarleyDavidson!
Ich habe da nun ein Problem !...
Und zwar ist es jetzt so, daß es den Hintergrund dursichtig macht und nicht schwarz die größe kann ich festlegen aber die Farbe nicht??!! ???:L ???:L ???:L
Wenn ich auf minimieren klicke dann wird es erst schwarz!!?? ???:L
 

Anhänge

  • Spiel.jpg
    Spiel.jpg
    40,7 KB · Aufrufe: 17
  • Gewonnen.jpg
    Gewonnen.jpg
    156,5 KB · Aufrufe: 16
Zuletzt bearbeitet:
Durchsichtig?? ???:L Cool. Hast du irggendwo die Methode "setWindowOpacity()" eingebaut? Mit der kann man das Fenster transparent machen.

Ansonsten poste mal den aktuellen Code.
 

Zurück
Oben