eigene Fenster nutzen

truejojo

Grünschnabel
Hallo,
vielleicht kann mir ja jemand helfen, wäre super!
Also, ich hab eigene Fenster geschrieben und will die nun in die dazu gehörige Methoden einbauen, wo ich zuvor JOptionePane nutze, bekomme es aber nicht hin.
Man kann etwas schreiben und dieses geschriebene wird dann verglichen ob es richtig oder falsch ist.
In das eine Fenster kann man etwas rein schreiben, funktioniert auch aber eben auch nur bis hier hin, wie geht es weiter
So das dann das geschriebene verarbeitet wird?
Hier ist die Methode und die beiden Fenster ich hoffe man konnte verstehen wo mein Problem liegt!?



Die Methode:
Code:
public void spielStartEinMalEins(Spieler spieler)
	{
		for(int i=0; i<aufgabenAnzahl; i++)
    	{
    		for(int j=0; j<spieler.spielerAnzahl; j++)
    		{
    			int eingabeExtern = 0;
	    		int ausgabeExtern = 0;
	    		int ausgabeExternII = 0;
	    		int eingabeIntern = 0;
    			if(spieler.spielerAnzahl == 1)
    			{
    				if(true == hatReihenAufgabenMoeglichkeit)
    				{
    					//nur für testzwecken, ansonsten hier ohne spielernamen
    					JOptionPane.showMessageDialog(null, "Hallo "+  spieler.name[j] +", du bist dran!");
		    			ausgabeExtern = (int)(Math.random() * reihenZaehlEnde + reihenZaehlStart);
		    			// Wie kann ich hier das eigene Fenster nutzen? ich weiss nicht, wie man das Fenster hier
		    			// einbauen kann, so dass nicht danach das Spiel unterbrochen ist?
		    			// es stürtzt immer ab, da das Programm beendet wird, wie kann ich nur das Fenster schließen
		    			// so das es danach weiter geht?
//		    			AusgabeTextGrafik ausgabe = new AusgabeTextGrafik("Hallo "+  spieler.name[j] +", du bist dran!");
//		    			ausgabe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		    			
		    			JOptionPane.showMessageDialog(null, reihenZahlIndividuel[j] +" * "+ausgabeExtern+"  =");
		    			//Hier verstehe ich nicht, wie ich das eingegebene dann der Methode übergebe, so wie das bei
		    			// JOptionPane funktioniert, so das dann die beiden Strings miteinander verglichen werden
		    			// können!
//		    			AusgabeEingabeTextGrafik ausgabeEingabe = new AusgabeEingabeTextGrafik(reihenZahlIndividuel[j] +" * "+ausgabeExtern+"  =", 2);
//		    			ausgabeEingabe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		    			
		    			eingabeExtern = Integer.parseInt(JOptionPane.showInputDialog("Bitte das Ergebnis eintragen:"));	
		    			eingabeIntern = reihenZahlIndividuel[j] * ausgabeExtern; 
    				}
    				else
    				{
    					ausgabeExtern = (int)(Math.random() * reihenZaehlEnde + reihenZaehlStart);
    	    			ausgabeExternII = (int)(Math.random() * reihenZaehlEnde + reihenZaehlStart);
    	    			JOptionPane.showMessageDialog(null, ausgabeExtern +" * "+ausgabeExternII+"  =");
    	    			eingabeExtern = Integer.parseInt(JOptionPane.showInputDialog("Bitte das Ergebnis eintragen:"));
    	    			eingabeIntern = ausgabeExtern * ausgabeExternII;
    				}
    			}
    			else
    			{
    				if(true == hatReihenAufgabenMoeglichkeit)
    				{
		    			JOptionPane.showMessageDialog(null, "Hallo "+  spieler.name[j] +", du bist dran!");
		    			ausgabeExtern = (int)(Math.random() * reihenZaehlEnde + reihenZaehlStart);
		    			JOptionPane.showMessageDialog(null, reihenZahlIndividuel[j] +" * "+ausgabeExtern+"  =");
		    			eingabeExtern = Integer.parseInt(JOptionPane.showInputDialog("Bitte das Ergebnis eintragen:"));	
		    			eingabeIntern = reihenZahlIndividuel[j] * ausgabeExtern; 	
    				}
    				else
    				{
    					JOptionPane.showMessageDialog(null, "Hallo "+  spieler.name[j] +", du bist dran!");
    					ausgabeExtern = (int)(Math.random() * reihenZaehlEnde + reihenZaehlStart);
    	    			ausgabeExternII = (int)(Math.random() * reihenZaehlEnde + reihenZaehlStart);
    	    			JOptionPane.showMessageDialog(null, ausgabeExtern +" * "+ausgabeExternII+"  =");
    	    			eingabeExtern = Integer.parseInt(JOptionPane.showInputDialog("Bitte das Ergebnis eintragen:"));
    	    			eingabeIntern = ausgabeExtern * ausgabeExternII;
    				}
    			}
    			
    			
	    		if(eingabeIntern == eingabeExtern)
	    		{
	    			spieler.zaehlerRichtig[j]++;
	    			JOptionPane.showMessageDialog(null, "Super, das war richtig!");
	    		} 
	    		else 
	    		{
	    			// Spieler hat Fehler gemacht.
	    			// Wenn er korrekturmöglichkeit hat, dann darf er es nochmal versuchen
	    			if (true == hatKorrekturMoeglichkeit)
	    			{
	    				JOptionPane.showMessageDialog(null, "Hallo "+  spieler.name[j] +", bist Du sicher, überprüfe deine Eingabe");
	    	    		eingabeExtern = Integer.parseInt(JOptionPane.showInputDialog("Die Zahl ist:"));
	    	    		if(eingabeIntern == eingabeExtern)
	    	    		{
	    	    			spieler.zaehlerRichtig[j]++;
	    	    			JOptionPane.showMessageDialog(null, "Super, jetzt ist es richtig!");
	    	    		}
	    	    		else
		    			{
		    				JOptionPane.showMessageDialog(null, "Schade, das war leider falsch!"+
		    						"\nDas wäre das Ergebnis gewesen:\n"+eingabeIntern);
		    			}
	    			}
	    			else
	    			{
	    				JOptionPane.showMessageDialog(null, "Schade, das war leider falsch!"+
	    						"\nDas wäre das Ergebnis gewesen:\n"+eingabeIntern);
	    			}
	    		}
    		}
    	}
	}

Die beiden Fenster:
Java:
public class AusgabeTextGrafik extends JDialog implements ActionListener
{	
	AusgabeTextGrafik(String ausgabeFolge)
	{
		super();
		
		Container container = getContentPane();
		container.setLayout(new GridLayout(2, 1));
		container.add(new JLabel(ausgabeFolge));
		
		JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER));
		container.add(panel);
		JButton okButton = new JButton("OK");
		panel.add(okButton);
		okButton.addActionListener(this);
	
		setBounds(300, 100, 200, 150);
		setVisible(true);
	}
	
	public void actionPerformed(ActionEvent e)
	{
		if(e.getActionCommand().equals("OK"))
		{
			
		}
	}

	
	
}
Und das andere Fenster:
Java:
public class AusgabeEingabeTextGrafik extends JDialog implements ActionListener
{
	AusgabeEingabeTextGrafik(String ausgabeFolge, int textFieldGroesse)
	{
		super();
		
		Container container = getContentPane();
//		container.setLayout(new GridLayout(3, 1));
		container.setLayout(new BorderLayout(3, 3));
		
//		container.add(new JLabel(ausgabeFolge));
		JPanel ausgabe = new JPanel(new FlowLayout(FlowLayout.CENTER));
		container.add(ausgabe, BorderLayout.NORTH);
		JLabel ausgabeFeldLabel = new JLabel(ausgabeFolge);
		ausgabe.add(ausgabeFeldLabel);
		
		JPanel textEingabe = new JPanel(new FlowLayout(FlowLayout.CENTER));
		container.add(textEingabe, BorderLayout.CENTER);
		JTextField textField = new JTextField(textFieldGroesse + 3);
		textEingabe.add(textField);
//		textField.addActionListener(this);
		
		JPanel panelButton = new JPanel(new FlowLayout(FlowLayout.CENTER));
		container.add(panelButton, BorderLayout.SOUTH);
		JButton okButton = new JButton("OK");
		panelButton.add(okButton);
		okButton.addActionListener(this);
	
		setBounds(300, 100, 200, 150);
		setVisible(true);
	}
	
	public void actionPerformed(ActionEvent e)
	{
		if(e.getActionCommand().equals("OK"))
		{
			System.exit(0);
		}
	}
	
}
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

du must natürlich ersteinmal das EXIT_ON_CLOSE entfernen und
entweder durch DO_NOTHING_ON_CLOSE ersetzen und alles über
einen WindowListener regeln. Oder HIDE_ON_CLOSE verwenden was
dann zumindest dein Fenster automatisch schließt.

Gruß JAdix
 
Moinmoin,
vielen Dank ersteinmal für den guten Tipp!
Ich habe das mit dem Fenster schließen schon in meinem Projekt geändert, aber da gibt es noch ein großen Problem, vielleicht kannst Du mir ja nochmal helfen oder einanderer hat einen Rat!

Hier das Problen:
(der Ausschnitt ist aus der ersten Methode, ich meine in der ersten if Bedingung der Schleife wieder zu finden)
Code:
//Wie kann ich dieses Fenster dem String eingabeExtern übergeben? Man hat ja die //Möglichkeit, hier etwas 
// rein zu schreiben, wie kann ich das dann dem String eingabeExtern übergeben?
// So das ich nicht mehr die untenstehende JOptionePane Variante benötige!!

AusgabeEingabeTextGrafik ausgabeEingabe = new AusgabeEingabeTextGrafik(reihenZahlIndividuel[j] +" * "+ausgabeExtern+"  =", 2);	    			ausgabeEingabe.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
		    			
eingabeExtern = Integer.parseInt(JOptionPane.showInputDialog
("Bitte das Ergebnis eintragen:"));	
eingabeIntern = reihenZahlIndividuel[j] * ausgabeExtern;
 
Zurück