Sternzeichen

Javafan12

Aktives Mitglied
Hallo,
Ich habe iein Java Programm entwickelt, dass wenn man z.B auf Steinbock klickt den entsprechenden Monat enthält. Das Problem ist: Wenn ich auf Steinbock klicke passiert nichts.
Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Sternzeichen extends JFrame implements ActionListener
{
	private JButton Steinbock;
	private JButton Wassermann;
	private JButton Fisch;
	private JButton Stier;
	private JButton Zwilling;
	private JButton Krebs;
	private JButton Löwe;
	private JButton Jungfrau;
	private JButton Waage;
	private JButton Skropion;
	private JButton Schützen;

	public Sternzeichen()
	{
		super("Klicke ein Sternzeichen an");
		JPanel Platte = new JPanel();
		JButton Steinbock = new JButton("Steinbock");
		JButton Wassermann = new JButton("Wassermann");
		JButton Fisch = new JButton("Fisch");
		JButton Stier = new JButton("Stier");
		JButton Zwilling = new JButton("Zwilling");
		JButton Krebs = new JButton("Krebs");
		JButton Löwe = new JButton("Löwe");
		JButton Jungfrau = new JButton("Jungfrau");
		JButton Waage = new JButton("Waage");
		JButton Skropion = new JButton("Skropion");
		JButton Schützen = new  JButton("Schützen");
		Platte.add(Steinbock);
		Platte.add(Wassermann);
		Platte.add(Fisch);
		Platte.add(Stier);
		Platte.add(Zwilling);
		Platte.add(Krebs);
		Platte.add(Löwe);
		Platte.add(Jungfrau);
		Platte.add(Waage);
		Platte.add(Skropion);
		Platte.add(Schützen);
		Platte.setLayout(new GridLayout());
		setContentPane(Platte);

		Steinbock.addActionListener(this);
		Wassermann.addActionListener(this);
		Fisch.addActionListener(this);
		Stier.addActionListener(this);
		Zwilling.addActionListener(this);
		Krebs.addActionListener(this);
		Löwe.addActionListener(this);
		Jungfrau.addActionListener(this);
		Waage.addActionListener(this);
		Skropion.addActionListener(this);
		Schützen.addActionListener(this);

	}
	public void actionPerformed(ActionEvent Ereignis)
	{
		Object Qelle = Ereignis.getSource();

		if(Qelle == Steinbock)
			JOptionPane.showMessageDialog(null, "Januar");
		if(Qelle == Wassermann)
			JOptionPane.showMessageDialog(null, "Februar");
		if(Qelle == Fisch)
			JOptionPane.showMessageDialog(null, "März");
		if(Qelle == Stier)
			JOptionPane.showMessageDialog(null, "April");
		if(Qelle == Zwilling)
			JOptionPane.showMessageDialog(null, "Juni");
		if(Qelle == Krebs)
			JOptionPane.showMessageDialog(null, "Juli");
		if(Qelle == Löwe)
			JOptionPane.showMessageDialog(null, "August");
		if(Qelle == Jungfrau)
			JOptionPane.showMessageDialog(null, "September");
		if(Qelle == Waage)
			JOptionPane.showMessageDialog(null, "Oktober");
		if(Qelle == Skropion)
			JOptionPane.showMessageDialog(null, "November");
		if(Qelle == Schützen)
			JOptionPane.showMessageDialog(null, "Dezember");

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

Kann mir jemand das Problem erklären und eventuell den richtigen Qelltext schicken.
 

eRaaaa

Top Contributor
Hehe :D
Fehler: Das Steinbock welches du vergleichst, ist null (genauso wie alle anderen Buttons im Listener), das liegt daran, dass du im Konstruktor lokale/neue JButtons erstellst :)

Lasse also in dne Zeilen 22-33 einfach das "JButton" am Anfang weg :)
 

ARadauer

Top Contributor
im Konstruktor

Java:
..
Steinbock = new JButton("Steinbock");
..

statt

Java:
..
JButton Steinbock = new JButton("Steinbock");
..

in deinem Fall definierst du eine neue Variable, die die äussere der Klasse überschreibt.
ohne dem JButton wießt du der schon vorhandenen Variable den Wert zu...

und Variablen bitte klein schreiben..
 

Oben