Kombinationsfeld - LISTENER

llabusch

Mitglied
Liebe Java Gemeinde,


Ich komme an einem minimalen Teil einer Aufgabe nicht weiter, ansonsten habe ich alles wunderbar funktionstüchtig hinbekommen.

Es geht um einen "Taschenrechner" in dem man über eine ComboBox die Rechenart auswählen kann. Das Funktioniert auch alles bestens, nur soll es auch so sein, dass er automatisch beim verändern der Rechenart direkt neu rechnet und das Ergebnis promt anzeigt.


Ja ja, gut so weit. Setzt man einen Listener auf die Combobox, aber das bekomme ich aus irgendwelchen Gründen nicht hin.... Sieht jemand von euch den Fehler?

Liebsten Dank!!!!


Der Listener ist bei Z. 70 und das Panel in Z. 154



Java:
package de.fernschulen.taschenrechnerv2;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.text.DecimalFormat;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;

public class TaschenrechnerGUIV2 extends JFrame{

	//automatisch �ber Eclipse eingef�gt
	private static final long serialVersionUID = 3006212012028893840L;
	
	//die Komponente
	//zwei Eingabefelder
	private JTextField eingabe1, eingabe2;
	
	
	
	private String[] rechenoperatoren = {"Addition", "Subtraktion", "Multiplikation", "Division"};		//Das Array mit den Rechenoperatoren vereinbaren
	private JComboBox <String> auswahl;																	//Das Kombinationsfeld vereinbaren
	
	
	
	//zwei Schaltfl�chen
	private JButton schaltflaecheBerechnen, schaltflaecheBeenden;
	//ein Label f�r die Ausgabe
	private JLabel ausgabe;
	
	//die innere Klasse f�r die Ereignisverarbeitung
	class MeinListener implements ActionListener, ItemListener{
		
		@Override
		public void actionPerformed(ActionEvent e) {
			//wurde auf Beenden geklickt?
			//dann das Programm beenden
			if (e.getActionCommand().equals("ende")) 
				System.exit(0);
			//wurde auf Berechnen geklickt?
			//dann eine Methode f�r die Berechnung aufrufen
			//und das Ergebnis anzeigen
			if (e.getActionCommand().equals("rechnen"))  
				ausgabe.setText(berechnen());
	
			
			
			
			
			
		
		
			
		
	
	}

		@Override
		public void itemStateChanged(ItemEvent e) {
			Object ausloeser = e.getSource();										//Die Ereignisquelle ermitteln und in einer Variablen speichern
			
			
			if (ausloeser instanceof JComboBox) {									//Wenn die Ereignisquelle das Kombinationsfeld ist, dann wird die jeweilige Rechenart ausgeführt
				
				berechnen();
			
		}
	}
	}
	//der Konstruktor
	public TaschenrechnerGUIV2(String titel) {
		
		super(titel);
		
		//insgesamt 4 Panels
		JPanel panelEinAus, panelBerechnung, panelButtons, gross;
		
		//die Panels �ber die Methoden erstellen
		panelEinAus = panelEinAusErzeugen();
		panelBerechnung = panelBerechnungErzeugen();
		panelButtons = panelButtonErzeugen();
		
		//das Border-Layout benutzen
		//es ist Standard und muss nicht gesetzt werden
		
		//die Panels hinzuf�gen
		//die beiden gr��eren Panel fassen wir noch einmal zusammen
		gross = new JPanel();
		gross.add(panelEinAus);
		gross.add(panelBerechnung);
		//die beiden kommen in die Mitte
		add(gross,BorderLayout.CENTER);
		//das Panel mit den Buttons nach rechts
		add(panelButtons, BorderLayout.EAST);

		//die Standard-Aktion setzen
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		//packen und anzeigen
		pack();
		setVisible(true);
		
		//Gr��en�nderungen sind nicht zugelassen
		//damit das m�hsam erstellte Layout nicht durcheinander kommt
		setResizable(false);
	}

	//die Methode erzeugt das Panel f�r die Ein- und Ausgabe
	//und liefert es zur�ck
	private JPanel panelEinAusErzeugen() {
		JPanel tempPanel = new JPanel();
		//es enth�lt die Eingabefelder mit beschreibendem Text und die Ausgabe
		//die L�nge der Felder ist auf 10 Zeichen beschr�nkt
		eingabe1 = new JTextField(10);
		eingabe2 = new JTextField(10);
		ausgabe = new JLabel("");
		
		//das Panel bekommt ein GridLaoyut mit 2 Spalten und etwas Abstand
		tempPanel.setLayout(new GridLayout(0,2,10,10));
		//ein beschreibendes Label f�r die erste Eingabe
		tempPanel.add(new JLabel("Zahl 1:"));
		//das erste Eingabefeld
		tempPanel.add(eingabe1);
		
		//und jetzt das zweite Eingabefeld
		tempPanel.add(new JLabel("Zahl 2: "));
		tempPanel.add(eingabe2);
		
		//und nun das Ausgabefeld f�r das Ergebnis
		tempPanel.add(new JLabel("Ergebnis: "));
		tempPanel.add(ausgabe);
		
		//einen Rahmen um das Panel ziehen
		tempPanel.setBorder(new TitledBorder("Ein- und Ausgabe"));
		
		//das Panel zur�ckliefern
		return tempPanel;
	}
	
	//die Methode erzeugt das Panel f�r die Auswahl
	//der Rechenoperation und liefert es zur�ck
	private JPanel panelBerechnungErzeugen() {
		JPanel tempPanel = new JPanel();
		
		
		auswahl = new JComboBox<String> (rechenoperatoren);					//Das Kombinationsfeld erzeugen und es mit den Daten aus dem Array füllen
		
		
		
		
		
		
		
		tempPanel.setLayout(new FlowLayout());								//Das Flow-Layout für das Panel wählen
		tempPanel.add(auswahl);												//Das Kombinationsfeld in das Panel einfügen
		
		MeinListener listener = new MeinListener();
		auswahl.addItemListener(listener);									//Den Listener mit dem Kombinationsfeld verbinden
		
		
		
		
		//und einen Rahmen
		tempPanel.setBorder(new TitledBorder("Operation: "));

		//das Panel zur�ckliefern
		return tempPanel;
	}
	
	//die Methode erzeugt das Panel f�r die Schaltfl�chen
	//und liefert es zur�ck
	private JPanel panelButtonErzeugen() {
		JPanel tempPanel = new JPanel();

		schaltflaecheBeenden = new JButton(" Beenden ");
		//das Aktion-Command setzen
		schaltflaecheBeenden.setActionCommand("ende");
		schaltflaecheBerechnen = new JButton("Berechnen");
		schaltflaecheBerechnen.setActionCommand("rechnen");
		
		//Zwischenpanel f�r die Schaltfl�chen
		//ebenfalls ein GridLayout
		tempPanel.setLayout(new GridLayout(0,1));
		tempPanel.add(schaltflaecheBerechnen);
		//ein leeres Label einf�gen
		tempPanel.add(new JLabel());
		tempPanel.add(schaltflaecheBeenden);
		
		//die Schaltfl�chen mit dem Listener verbinden
		MeinListener listener = new MeinListener();
		schaltflaecheBeenden.addActionListener(listener);
		schaltflaecheBerechnen.addActionListener(listener);
		
		
		
		
		
		
		
		
		//das Panel zur�ckliefern
		return tempPanel;
	}
	
	//die Methode berechnet das Ergebnis und liefert es als 
	//Zeichenkette zur�ck
	private String berechnen() {
		//ergebnis muss initialisiert werden
		double zahl1, zahl2, ergebnis = 0;
		boolean fehlerFlag = false;
	
		//jetzt mit Fehlerbehandlung und Ausgabe der Meldung durch eine eigene Methode
		try {
			zahl1 = Double.parseDouble(eingabe1.getText());
		}
		catch (Exception NumberFormatException) {
			fehlermeldung(eingabe1);
			return ("Nicht definiert");
		}
		
		try {
			zahl2 = Double.parseDouble(eingabe2.getText());
		}
		catch (Exception NumberFormatException) {
			fehlermeldung(eingabe2);
			//das Ergebnis ist nicht definiert
			return ("Nicht definiert");
		}
		//welche Operation ist ausgew�hlt?
		if (auswahl.getSelectedIndex() == 0)													//Die Rechenoperation wird direkt über den Index das Arrays abgefragt
			ergebnis = zahl1 + zahl2;
		if (auswahl.getSelectedIndex() == 1)
			ergebnis = zahl1 - zahl2;
		if (auswahl.getSelectedIndex() == 2)
			ergebnis = zahl1 * zahl2;
		//bei der Division �berpr�fen wir den zweiten Wert auf 0
		if (auswahl.getSelectedIndex() == 3) {
			if (zahl2 != 0)
				ergebnis = zahl1 / zahl2;
			else 
				fehlerFlag = true;
		}
		//wenn es keine Probleme gegeben hat, liefern wir das Ergebnis zur�ck
		if (fehlerFlag == false) {
			//die Formatvorgabe �ber die Klasse DecimalFormat
			DecimalFormat formatFolge = new DecimalFormat("0.##");
			//das Format anwenden, das Ergebnis ist eine Zeichenkette
			return (formatFolge.format(ergebnis));
		}
		else
			return ("Nicht definiert");
	}
	
	private void fehlermeldung(JTextField eingabefeld) {
		JOptionPane.showMessageDialog(this, "Ihre Eingabe ist nicht g�ltig","Eingabefehler", JOptionPane.ERROR_MESSAGE);
		eingabefeld.requestFocus();
	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Kombinationsfeld => Realisierung im Listener? Java Basics - Anfänger-Themen 2
T Variable durch Action Listener ändern Java Basics - Anfänger-Themen 2
D String value change listener Java Basics - Anfänger-Themen 2
topi WindowAdapter / Listener / Event Java Basics - Anfänger-Themen 4
L Problem mit Listener Java Basics - Anfänger-Themen 0
P Listener registrieren Java Basics - Anfänger-Themen 40
Salo JTabel Selection listener Bsp. Java Basics - Anfänger-Themen 3
W JLabel, Farbe durch Listener ändern Java Basics - Anfänger-Themen 6
M Listener für Button - Wert von Variablen verändern Java Basics - Anfänger-Themen 14
V JTable welcher Listener ? Java Basics - Anfänger-Themen 7
J Verständnis Problem Java-Listener. Java Basics - Anfänger-Themen 59
M Compiler-Fehler Using action listener Java Basics - Anfänger-Themen 1
F Listener schreiben Java Basics - Anfänger-Themen 1
P Eigene Knöpfe mit eigenem Listener Java Basics - Anfänger-Themen 5
B Listener beim Laden (deserialize) wieder hinzufügen bzw. mitspeichern? Java Basics - Anfänger-Themen 3
J Listener Java Basics - Anfänger-Themen 4
kaoZ Best Practice Verständnisfrage Listener bei lokalen Objekten Java Basics - Anfänger-Themen 8
F eigenes Listener Pattern mit Interface Java Basics - Anfänger-Themen 1
S Eigenen Listener zu eigenen Button! Java Basics - Anfänger-Themen 5
S Listener reagieren nicht mehr Java Basics - Anfänger-Themen 3
O Laufender Timer+Action Listener in Thread VS isAlive() Java Basics - Anfänger-Themen 4
E Mein eigener Listener (Hilfe gesucht) Java Basics - Anfänger-Themen 2
K On Click listener Problem Java Basics - Anfänger-Themen 4
L JTextField/Listener Input Problem Java Basics - Anfänger-Themen 2
M Listener einerm JPanel hinzufuegen Java Basics - Anfänger-Themen 3
G Listener ohne Objekt Java Basics - Anfänger-Themen 5
T Button Text mit Action Listener [Hilfe!] Java Basics - Anfänger-Themen 10
H Eigenen Listener einbauen Java Basics - Anfänger-Themen 5
K Key Listener bei 2 gleichzeitig gedrückten tasten Java Basics - Anfänger-Themen 3
M Bäume und Listener Java Basics - Anfänger-Themen 2
K Erste Schritte table Listener noob frage Java Basics - Anfänger-Themen 3
E eigenständige Listener-Klasse Java Basics - Anfänger-Themen 9
T Motion listener Java Basics - Anfänger-Themen 10
U Listener erstellen Java Basics - Anfänger-Themen 16
N Variablen aus Action Listener lesen und weiterverarbeiten Java Basics - Anfänger-Themen 12
M listener Java Basics - Anfänger-Themen 16
L Listener Problem in Klasse Java Basics - Anfänger-Themen 8
P Listener für mehrere Buttons Java Basics - Anfänger-Themen 3
L Window Listener Java Basics - Anfänger-Themen 2
Kenan89 JTable: Listener Java Basics - Anfänger-Themen 4
N Klassen auf den Action Listener in einer andere Klasse zugreifen Java Basics - Anfänger-Themen 6
A action listener Java Basics - Anfänger-Themen 8
M Netbeans Listener - Anonymous, inner class, main class? Java Basics - Anfänger-Themen 4
K Action Listener reagiert nicht auf Button druck mehr??? Java Basics - Anfänger-Themen 4
E Mehrere Listener auf einen Button? Java Basics - Anfänger-Themen 3
P Input/Output InputStream Listener? Java Basics - Anfänger-Themen 7
X Problem bezüglich Key Listener Java Basics - Anfänger-Themen 3
Y Button hört nicht auf Listener Java Basics - Anfänger-Themen 5
H JTable, Listener und CellEditor Java Basics - Anfänger-Themen 8
H Listener und Events entfernen Java Basics - Anfänger-Themen 2
B OOP Eigener Event-Listener erstellen Java Basics - Anfänger-Themen 4
M Listener Objekte Java Basics - Anfänger-Themen 12
S Applet Key Listener Java Basics - Anfänger-Themen 6
J Action Listener Java Basics - Anfänger-Themen 2
G Probleme mit Listener Java Basics - Anfänger-Themen 27
B Wert einer Variable mit Listener ueberwachen Java Basics - Anfänger-Themen 3
F Port Listener Java Basics - Anfänger-Themen 9
J JComboBox Listener Java Basics - Anfänger-Themen 6
J Window-Listener funktionieren nicht Java Basics - Anfänger-Themen 7
N Frage zu Listener für Textfelder Java Basics - Anfänger-Themen 5
Benji0815 Eigenen Listener schreiben Java Basics - Anfänger-Themen 13
M Probleme beim Aufruf von Listener in anderer Klasse Java Basics - Anfänger-Themen 9
S Key-Listener richtig "einbauen" Java Basics - Anfänger-Themen 42
S Listener von ausserhalb aufrufen Java Basics - Anfänger-Themen 2
S Action Listener Java Basics - Anfänger-Themen 6
Sweety Listener in Swing Java Basics - Anfänger-Themen 8
Hamstinator Design und Listener in verschiedenen Klassen Java Basics - Anfänger-Themen 6
Developer_X Mouse MOTION listener example Java Basics - Anfänger-Themen 5
J Mouse-Listener Java Basics - Anfänger-Themen 3
I Listener Klassen in Package Java Basics - Anfänger-Themen 3
StickToFreak Applet -> GameLoop + Listener / Listener funktioniert nicht Java Basics - Anfänger-Themen 22
B externer Listener für Zeichenbereich? Java Basics - Anfänger-Themen 2
D dialog listener? Java Basics - Anfänger-Themen 2
G Key Listener arbeitet Fehlerhaft Java Basics - Anfänger-Themen 6
C Listener und Events Java Basics - Anfänger-Themen 10
E Listener Java Basics - Anfänger-Themen 2
hdi keylistener hat keinen fokus oder: listener ohne frame? Java Basics - Anfänger-Themen 10
G jtable listener wenn zeile markiert wird Java Basics - Anfänger-Themen 6
S Action Listener Funktioniert nicht Java Basics - Anfänger-Themen 6
G LIstener bei JavaMail Java Basics - Anfänger-Themen 2
G Context Listener des Apache Tomcat verwenden Java Basics - Anfänger-Themen 4
D Listener bzw. Interfaces Java Basics - Anfänger-Themen 7
A Wo/Wie Event Listener Java Basics - Anfänger-Themen 3
G Window Listener? Java Basics - Anfänger-Themen 2
G 2 Listener wiedersprechen sich. Java Basics - Anfänger-Themen 12
G Listener für JPanel für Statusmeldungen Java Basics - Anfänger-Themen 3
F Listener für Variable Java Basics - Anfänger-Themen 29
A Gibt es standardmässig in Java einen Verzeichnis-Listener? Java Basics - Anfänger-Themen 6
N Listener für datei Java Basics - Anfänger-Themen 13
S Mit Listener AWT Objekte ansprechen Java Basics - Anfänger-Themen 2
G listener für radiobutton Java Basics - Anfänger-Themen 1
G Listener Java Basics - Anfänger-Themen 5
G Listener Problem Java Basics - Anfänger-Themen 3
B Wiso funktioniet das nicht? (Listener) Java Basics - Anfänger-Themen 6
H Key Listener macht nicht das was er soll Java Basics - Anfänger-Themen 4
T Wartet Klasse auf Listener? Java Basics - Anfänger-Themen 3
D Listener? Java Basics - Anfänger-Themen 2
S Listener auf JTextfeld Java Basics - Anfänger-Themen 8
B Kommunikation zwischen Klasse und Listener Java Basics - Anfänger-Themen 2
C Benutzereingaben vor Listener abfangen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben