Swing Zahlenraten GUI wirft nur die Error Message aus

Alex2013

Bekanntes Mitglied
Hey Leute,

ich wollte heute ein grafisches Zahlenratenprogramm schreiben.
Soweit so gut... das Programm an sich ist fertig, nur wenn ich eine Zahl eingebe, diese prüfe und anschließend die Nachricht ausgeben möchte, wirft mir Eclipse den else Zweig der If Abfrage entgegen...

Ich finde den Fehler selbst nicht, bzw. denke, dass ich alles richtig geschrieben habe.

Könnte evtl. jemand darüber schauen und mir sagen, an welcher Stelle ich einen Fehler eingebaut habe?
Oder ob ich die prüfen Funktion direkt als eigene Methode ausweisen soll?

Für eine Antwort wäre ich dankbar. 🙂

Hier der Code:

Java:
[code]
import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;


public class Zahlenraten_grafisch extends JFrame implements ActionListener 
{
	String a="Bitte geben Sie eine Zahl ein: ";
	String b="Ihre Eingabe war zu niedrig";
	String d="Ihre Eingabe war zu groß";
	JButton pruefen,b2;
	JLabel anzeige,ausgabe;
	JTextField eingabe;
	Container c;
	private static final long serialVersionUID = 1L;
	
	public Zahlenraten_grafisch(String titel)
	{
		c=getContentPane();
		setLayout(new GridLayout(2,3));
		setSize(400, 300);
		setLocation(200, 200);
		pruefen=new JButton("Prüfen");
		pruefen.addActionListener(this);
		anzeige=new JLabel("Bitte geben Sie eine Zahl ein: ");
		anzeige.setAlignmentX(RIGHT_ALIGNMENT);
		anzeige.setAlignmentY(CENTER_ALIGNMENT);
		ausgabe=new JLabel();
		ausgabe.setOpaque(true);
		ausgabe.setBackground(Color.WHITE);
		eingabe=new JTextField();
		c.add(anzeige);
		c.add(eingabe);
		c.add(pruefen);
		c.add(ausgabe);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	public static void main(String[] args) 
	{
		new Zahlenraten_grafisch("Zahlenraten GUI");
	}
	
	Random rnd = new Random();
	int zahl=rnd.nextInt(101);

	@Override
	public void actionPerformed(ActionEvent e) 
	{
		if((e.getActionCommand().equals("prüfen"))&&(eingabe.getText()!=null))
		{
			int zahl2=Integer.parseInt(eingabe.getText());
			if(zahl2<zahl)
			{
				ausgabe.setText(b);
			}
			else if(zahl2>zahl)
			{
				ausgabe.setText(d);
			}
			else
			{
				ausgabe.setText("Ihre Eingabe war korrekt! :-)");
			}
		}
		else 
		{
			String f="Fehler!";
			JOptionPane.showMessageDialog(null, "Sie müssen erst eine Eingabe tätigen",f,JOptionPane.ERROR_MESSAGE);
		}
	}
}
[/code]
 
Nein, das Programm wirft nur nachdem ich die Eingabe getätigt habe und auf prüfen drücke direkt die Error Message aus, die ich im else Zweig definiert habe. Das Programm bzw. der Compiler an sich nicht...
Daher weiß ich jetzt auch nicht direkt, wo ich suchen soll...
Ich habe jetzt noch ein paar mal was geänder, aber da sich trotzdem nichts geändert hat, habe ich das wieder rückgängig gemacht. :-(

Siehst du denn einen oder mehrere Fehler?
 
Dein Fehler ist, dass du das ActionCommand abfragst, es aber nirgends gesetzt hast.

Also entweder diesen Test machen:

Java:
if ( e.getSource( ) == pruefen && ... )

oder

Java:
pruefen.setActionCommand( "pruefen" );

in deinem Konstruktor
 
kleines p statt großem P

häng doch die ActionListener direkt an den Button, und nicht über ein "getActionCommand..."
 
Ahhh, ich könnte im Boden versinken... :-(
Deine Möglichkeit geht auch MrClave

Aber wie Phash gerade geschrieben hat, habe ich das auch erst gerade gesehen... :-(

Das ist mir schon einmal passiert... Ich sollte mir echt ein post it an den Laptop kleben, wo ein Hinweis dazu steht.

Aber vielen Dank für eure Mühe! 🙂
 

Zurück
Oben