Taschenrechner mit ComboBox

bandy

Bekanntes Mitglied
Hallo,

ich programmiere einen Taschenrechner und zwar soll er durch zwei "JTextField" Zahlen einlesen und dann durch gewuenschte Rechenoperation in der JComboBox, diese miteinander verrechnen und das Ergebnis in einem Label ausgeben. Hier mein Quelltext:


Java:
  import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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


public class JComboBoxx extends JFrame {
	private String[] rechenauswahl={"Addition", "Subtraktion", "Multiplikation", "Division"};//Liste fuer die ComboBox
	private JComboBox auswahl;
	
	private double zahl1, zahl2, ergebnis=0;
	private JLabel anzeige;
	private JTextField eingabe1, eingabe2;
	
	class InnereKlasse implements ActionListener{

		@Override
		public void actionPerformed(ActionEvent e) {
			Object ausloeser=e.getSource();
			zahl1 = Double.parseDouble(eingabe1.getText());
			zahl2 = Double.parseDouble(eingabe2.getText());
			if(ausloeser instanceof JComboBox){
				
				if(auswahl.getSelectedItem().toString().equals("Addition"))
					ergebnis=zahl1+zahl2;
				
				if(auswahl.getSelectedItem().toString().equals("Subtraktion"))
					ergebnis=zahl1-zahl2;
				
				if(auswahl.getSelectedItem().toString().equals("Multiplikation"))
					ergebnis=zahl1*zahl2;
				
				if(auswahl.getSelectedItem().toString().equals("Division"))
					ergebnis=zahl1/zahl2;
				
				
			}//Ende if-Abfrage
				
		}//Ende Methode
		
	}//Ende InnereKlasse

	//Konstruktor
	public JComboBoxx(String titel){
		super(titel);
		auswahl=new JComboBox(rechenauswahl);
		auswahl.setEnabled(false);
		anzeige=new JLabel(ergebnis);
		
	}
	
	
}


Leider gibt es Probleme beim Erstellen des Quelltextes, die Methode
Java:
getSelectedItem()
wird schon rot unterstrichen und
Java:
new JComboBox(rechenauswahl);
sowie
Java:
anzeige=new JLabel(ergebnis);

Was ist falsch, wo liegt der Fehler?:bahnhof:
 
G

Gast2

Gast
Java:
getSelectedItem()
Liefert dir ein Object zurück, da musst du zuerst nach String casten.

Java:
new JComboBox(rechenauswahl);
du hast JComboBox nicht importiert.

Java:
anzeige=new JLabel(ergebnis);
JLabel erwartet einen String.
Code:
new JLabel(String.valueOf(ergebnis))
sollte funktionieren.
 

bandy

Bekanntes Mitglied
Java:
getSelectedItem()
Liefert dir ein Object zurück, da musst du zuerst nach String casten.

Java:
new JComboBox(rechenauswahl);
du hast JComboBox nicht importiert.

Java:
anzeige=new JLabel(ergebnis);
JLabel erwartet einen String.
Code:
new JLabel(String.valueOf(ergebnis))
sollte funktionieren.

Also nun habe ich einige Aenderungen vorgenommen und der Taschenrechner rechnet, allerdings erscheint "ergebnis" nicht im Label "anzeige". Mit
Java:
System.out.println(ergebnis);
laesst sich jedoch ueberpruefen, dass ein Rechenvorgang statt findet nur wie gesagt nicht im Label angezeigt wird.

Hier nochmal der verbesserte Quelltext:

Java:
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JComboBox;



public class JComboBoxx extends JFrame {
	
	private static final long serialVersionUID = 1L;
	private String[] rechenauswahl={"Addition", "Subtraktion", "Multiplikation", "Division"};//Liste fuer die ComboBox
	private JComboBox auswahl;
	
	private double zahl1, zahl2, ergebnis;
	private JLabel anzeige;
	private JTextField eingabe1, eingabe2;
	
	class InnereKlasse implements ActionListener{
		
		@Override
		public void actionPerformed(ActionEvent e) {
			Object ausloeser=e.getSource();
			zahl1 = Double.parseDouble(eingabe1.getText());
			zahl2 = Double.parseDouble(eingabe2.getText());
			if(ausloeser instanceof JComboBox){
				
				if(auswahl.getSelectedItem().toString().equals("Addition"))
					ergebnis=zahl1+zahl2;
				
				
				if(auswahl.getSelectedItem().toString().equals("Subtraktion"))
					ergebnis=zahl1-zahl2;
				
				if(auswahl.getSelectedItem().toString().equals("Multiplikation"))
					ergebnis=zahl1*zahl2;
				
				if(auswahl.getSelectedItem().toString().equals("Division"))
					ergebnis=zahl1/zahl2; 
				
				
			}//Ende if-Abfrage
			System.out.println(ergebnis);
				
		}//Ende Methode
		
	}//Ende InnereKlasse

	//Konstruktor
	public JComboBoxx(String titel){
		super(titel);
		auswahl=new JComboBox(rechenauswahl);
		auswahl.setEnabled(true);
		
		InnereKlasse InnereKlasse = new InnereKlasse();
		auswahl.addActionListener( InnereKlasse);
		
		eingabe1 = new JTextField(10);
		eingabe2 = new JTextField(10);
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		anzeige=new JLabel(String.valueOf(ergebnis));
		
		setLayout(new GridLayout(7,1,10,10));
		add(auswahl);
		
		add(new JLabel("Zahl1: "));
		add(eingabe1);
		add(new JLabel("Zahl2: "));
		add(eingabe2);
		add(new JLabel("Ergebnis: "));
		add(anzeige);
		
		
		
		setSize(300,300);
		setVisible(true);
	}
	
	
}

Wie kann ich nun es erreichen, dass "ergebnis" im Label angezeigt wird?:bahnhof:
 

bandy

Bekanntes Mitglied
Nun habe ich den Taschenrechner erweitert und zwar um die Container. Die beiden Eingabefelder und Ausgabe, habe ich in einen Container gesteckt, die JComboBox in den anderen Container und den Button in den dritten Container. Alle diese Container wiederum in einen Container "gross" gesteckt. Leider gibt es wieder ein Problem mit der Ausgabe im Label erscheint nichts und ich kann keinen Fehler entdecken


Java:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;

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





public class JComboBoxx extends JFrame {
	
	private static final long serialVersionUID = 1L;
	private String[] rechenauswahl={"Addition", "Subtraktion", "Multiplikation", "Division"};//Liste fuer die ComboBox
	private JComboBox auswahl;
	private JButton schaltflaecheBeenden;
	
	private boolean fehlerFlag;
	private double zahl1, zahl2, ergebnis;
	private JLabel ausgabe;
	private JTextField eingabe1, eingabe2;
	
	class InnereKlasse implements ActionListener{
		
		@Override
		public void actionPerformed(ActionEvent e) {
			//wurde auf Beenden geklickt?
			//dann das Programm beenden
			if (e.getActionCommand().equals("ende")) {
				System.exit(0);}
			
			
			
			Object ausloeser=e.getSource();
			zahl1 = Double.parseDouble(eingabe1.getText());
			zahl2 = Double.parseDouble(eingabe2.getText());
			
			
			
			
			
			
			if(ausloeser instanceof JComboBox){
				
				if(auswahl.getSelectedItem().toString().equals("Addition"))
					ergebnis=zahl1+zahl2;
				
				
				if(auswahl.getSelectedItem().toString().equals("Subtraktion"))
					ergebnis=zahl1-zahl2;
				
				if(auswahl.getSelectedItem().toString().equals("Multiplikation"))
					ergebnis=zahl1*zahl2;
				
				if(auswahl.getSelectedItem().toString().equals("Division")){
					if(zahl2!=0)
					ergebnis=zahl1/zahl2; 
								
			}//Ende if-Abfrage
			System.out.println(ergebnis);
			ausgabe=new JLabel(String.valueOf(ergebnis));

			
			
				
		}//Ende Methode
		
		
		
	}//Ende InnereKlasse

	//Konstruktor
	public JComboBoxx(String titel){
		super(titel);
				
		JPanel panelEinAus, panelComboBox, panelButtons, gross;
		
		
		panelEinAus = panelEinAusErzeugen();
		panelComboBox = panelComboBoxErzeugen();
		panelButtons = panelButtonErzeugen();
		
		gross = new JPanel();
		gross.add(panelEinAus);
		gross.add(panelComboBox);
		add(gross,BorderLayout.CENTER);
		
	
		add(panelButtons, BorderLayout.EAST);

		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		pack();
		setVisible(true);
		
		setResizable(false);
	}

	

	private JPanel panelButtonErzeugen() {
		JPanel tempPanel = new JPanel();

		schaltflaecheBeenden = new JButton(" Beenden ");
		schaltflaecheBeenden.setActionCommand("ende");
		
		tempPanel.setLayout(new GridLayout(0,1,10,10));
		
		tempPanel.add(new JLabel());
		tempPanel.add(schaltflaecheBeenden);
		
		InnereKlasse InnereKlasse = new InnereKlasse ();
		schaltflaecheBeenden.addActionListener(InnereKlasse);
		
		return tempPanel;
	}
	

		private JPanel panelEinAusErzeugen() {
		JPanel tempPanel = new JPanel();
	
		eingabe1 = new JTextField(10);
		eingabe2 = new JTextField(10);
		ausgabe=new JLabel(String.valueOf(ergebnis));
		
		tempPanel.setLayout(new GridLayout(0,2,10,10));
		tempPanel.add(new JLabel("Zahl 1:"));
		
		tempPanel.add(eingabe1);
		
		tempPanel.add(new JLabel("Zahl 2: "));
		tempPanel.add(eingabe2);
		
		tempPanel.add(new JLabel("Ergebnis: "));
		tempPanel.add(ausgabe);
		
	
		
		
		
		tempPanel.setBorder(new TitledBorder("Ein- und Ausgabe"));
		
		return tempPanel;
	}
	
	
	
	
	private JPanel panelComboBoxErzeugen() {
		JPanel tempPanel = new JPanel();
		auswahl=new JComboBox(rechenauswahl);
		auswahl.setEnabled(true);
		
		InnereKlasse InnereKlasse = new InnereKlasse();
		auswahl.addActionListener( InnereKlasse);
		tempPanel.setLayout(new GridLayout(0,1,10,10));
		tempPanel.add(auswahl);
		
		tempPanel.setBorder(new TitledBorder("Operation: "));

		
		return tempPanel;
	}
	
	
	
}

Kann jemand den Fehler erkennen?:bahnhof:
 

eRaaaa

Top Contributor
Hä?

[java=69]
ausgabe=new JLabel(String.valueOf(ergebnis));
[/code]

a) wieso erstellst du ein neues Label
b) wenn dann müsstest du das natürlich auch dem Panel hinzufügen
c) wieso nicht einfach wie zuvor schon erwähnt den Text neu setzen?
[c]ausgabe.setText(String.valueOf(ergebnis));[/c]

*confused*

(p.s.: kann es auch sein dass du oft mit den Klammern durcheinander kommst? :D )
 

bandy

Bekanntes Mitglied
Hä?

[java=69]
ausgabe=new JLabel(String.valueOf(ergebnis));
[/code]

a) wieso erstellst du ein neues Label
b) wenn dann müsstest du das natürlich auch dem Panel hinzufügen
c) wieso nicht einfach wie zuvor schon erwähnt den Text neu setzen?
[c]ausgabe.setText(String.valueOf(ergebnis));[/c]

*confused*

(p.s.: kann es auch sein dass du oft mit den Klammern durcheinander kommst? :D )


So habe ich es auch probiert, ging aber nicht:noe: Entweder hatte ich irgendwo einen Fehler,:oops: oder es lag an Eclipse;) Aber Danke!:toll:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Exelsior JavaFX Taschenrechner mit FX AWT, Swing, JavaFX & SWT 6
melaniemueller Taschenrechner JavaFX AWT, Swing, JavaFX & SWT 4
N JavaFX Einfacher Taschenrechner mit Scene Builder und Java FX AWT, Swing, JavaFX & SWT 0
thor_norsk Taschenrechner AWT, Swing, JavaFX & SWT 8
melaniemueller JavaFX Taschenrechner mit SceneBuilder AWT, Swing, JavaFX & SWT 12
K JavaFX Taschenrechner textField auf 10stellen begrenzen AWT, Swing, JavaFX & SWT 26
L JavaFX javafx.fxml.LoadException bei einem Taschenrechner AWT, Swing, JavaFX & SWT 5
N Swing Taschenrechner GUI AWT, Swing, JavaFX & SWT 13
B Probleme Action Listener Taschenrechner AWT, Swing, JavaFX & SWT 27
O JavaFX mini Taschenrechner! AWT, Swing, JavaFX & SWT 35
N Taschenrechner mit mehreren Rechnungen AWT, Swing, JavaFX & SWT 18
A JavaFX Sehr viele Exceptions bei Taschenrechner mit JavaFx AWT, Swing, JavaFX & SWT 2
K Taschenrechner mit GUI AWT, Swing, JavaFX & SWT 2
L Event Handling Gui für Taschenrechner AWT, Swing, JavaFX & SWT 27
H Swing Taschenrechner GUI AWT, Swing, JavaFX & SWT 5
M Taschenrechner AWT, Swing, JavaFX & SWT 21
T Swing Taschenrechner AWT, Swing, JavaFX & SWT 2
M AWT Java-Taschenrechner, wie Stack richtig verwenden? AWT, Swing, JavaFX & SWT 14
C Grafik Taschenrechner AWT, Swing, JavaFX & SWT 5
H Taschenrechner Coding Erklärung AWT, Swing, JavaFX & SWT 2
Jats Hilfe bei FocusListener für Taschenrechner AWT, Swing, JavaFX & SWT 4
S AWT Probleme mit Taschenrechner AWT, Swing, JavaFX & SWT 9
V Bitte um Hilfe bei nem Taschenrechner AWT, Swing, JavaFX & SWT 8
C Taschenrechner in Java AWT, Swing, JavaFX & SWT 7
M MouseEvent JButton Taschenrechner AWT, Swing, JavaFX & SWT 5
K Java-Taschenrechner AWT, Swing, JavaFX & SWT 1
L Taschenrechner mit Klammern AWT, Swing, JavaFX & SWT 11
H Taschenrechner AWT, Swing, JavaFX & SWT 5
G Taschenrechner-Problem AWT, Swing, JavaFX & SWT 2
W Element aus comboBox mit observableList löschen AWT, Swing, JavaFX & SWT 3
T Combobox mit Autocomplete-Funktion AWT, Swing, JavaFX & SWT 7
J Eingaben aus Textfield & ComboBox speichern und in ComboBox wieder ausgeben AWT, Swing, JavaFX & SWT 3
N Promt Text der Combobox AWT, Swing, JavaFX & SWT 0
Doppel JavaFX ComboBox AWT, Swing, JavaFX & SWT 5
P JavaFX ClassCastException bei ComboBox.getValue AWT, Swing, JavaFX & SWT 4
F Wie bekomme ich den Wert der ComboBox in eine Variable gespeichert welche ich für meinen ActionListener nutzen kann? AWT, Swing, JavaFX & SWT 3
M Swing Java Swing/AWT Combobox Bug AWT, Swing, JavaFX & SWT 3
M Combobox bild anklicken AWT, Swing, JavaFX & SWT 2
L JavaFX Wiederspenstige ComboBox AWT, Swing, JavaFX & SWT 0
P Combobox und Enum AWT, Swing, JavaFX & SWT 3
L ComboBox Wert automatisch auswählen AWT, Swing, JavaFX & SWT 6
L Methode zum Füllen einer ComboBox AWT, Swing, JavaFX & SWT 4
K Nullpointer Combobox Listener AWT, Swing, JavaFX & SWT 2
K JavaFX Combobox, Textfield & setOnMouseClicked AWT, Swing, JavaFX & SWT 2
it_is_all Swing Button, ComboBox,... -- Unterschied: NetBeans Design <-> Ausführung AWT, Swing, JavaFX & SWT 2
D JavaFX ComboBox String setzen AWT, Swing, JavaFX & SWT 20
offi Combobox in TableCell AWT, Swing, JavaFX & SWT 1
D Javafx Combobox Abfrage aus mysql AWT, Swing, JavaFX & SWT 8
K Event Handling ComboBox Event Handler AWT, Swing, JavaFX & SWT 7
MrSnake ComboBox-Einträge werden unsichtbar AWT, Swing, JavaFX & SWT 0
L ComboBox: slider positionieren AWT, Swing, JavaFX & SWT 0
M JavaFX ComboBox: Update zur Laufzeit AWT, Swing, JavaFX & SWT 16
M JavaFX Combobox bindBidirectional AWT, Swing, JavaFX & SWT 4
D [Anfänger]ComboBox erstellt Einträge in einer anderen ComboBox AWT, Swing, JavaFX & SWT 3
T JavaFX Editable Combobox Text-Selektierung nach Trigger AWT, Swing, JavaFX & SWT 4
H Combobox aktualisieren AWT, Swing, JavaFX & SWT 2
G Swing ComboBox: Auswahl eines Items der Liste durch Eingabe eines Buchstabens AWT, Swing, JavaFX & SWT 3
M JavaFX ComboBox AWT, Swing, JavaFX & SWT 5
T Problem: ComboBox und addItem AWT, Swing, JavaFX & SWT 5
J ComboBox als Filter benutzen AWT, Swing, JavaFX & SWT 1
M ausgewählte Inhalt von ListItem inn ComboBox in der Tabelle speichern AWT, Swing, JavaFX & SWT 0
Developer_X Java JTable - Combobox + Checkbox - Cellrenderer + Editor AWT, Swing, JavaFX & SWT 3
G Dynamische ComboBox AWT, Swing, JavaFX & SWT 3
U Combobox mit individuellen Texten AWT, Swing, JavaFX & SWT 5
M JavaFX Combobox - Item Auswahl mit Tasten AWT, Swing, JavaFX & SWT 8
F JavaFX Daten aus Tabelle in ComboBox AWT, Swing, JavaFX & SWT 9
C Beschriftungen von Tabellenspalten mit Combobox aussuchen AWT, Swing, JavaFX & SWT 2
G JavaFX ComboBox .getItems().add() Problem AWT, Swing, JavaFX & SWT 9
D Swing [Frage] ComboBox + Label AWT, Swing, JavaFX & SWT 3
F SWT Problem mit Tabelle und Combobox in einem Wizard AWT, Swing, JavaFX & SWT 5
B JAVAFX icon in ComboBox einfügen AWT, Swing, JavaFX & SWT 5
W Swing Combobox Abhängigkeit AWT, Swing, JavaFX & SWT 1
S ComboBox-Werte aus einem Array an Textfields übergeben AWT, Swing, JavaFX & SWT 3
A Swing GUI mit ComboBox, wenn Item ausgewählt wurde neues GUI AWT, Swing, JavaFX & SWT 7
S Combobox aktualisieren AWT, Swing, JavaFX & SWT 3
B Erstellen eigener Combobox ("CellFactory") AWT, Swing, JavaFX & SWT 4
C Swing ComboBox - ActionListener deaktivieren AWT, Swing, JavaFX & SWT 2
A combobox automatisch in ein textfeld wechseln AWT, Swing, JavaFX & SWT 3
J Swing Drive-ComboBox AWT, Swing, JavaFX & SWT 7
C TextFeld in Verbindung zur ComboBox automatisch aktualisieren AWT, Swing, JavaFX & SWT 7
L Swing Model für ComboBox AWT, Swing, JavaFX & SWT 14
H Combobox in einer einzelnen Zelle der Jtable AWT, Swing, JavaFX & SWT 2
T Java Combobox Problem AWT, Swing, JavaFX & SWT 3
C SWT Combobox mit Textdatei füllen AWT, Swing, JavaFX & SWT 2
M comboBox Listener? AWT, Swing, JavaFX & SWT 2
R Datenbanktabellen in Combobox AWT, Swing, JavaFX & SWT 3
C Combobox bei Tabellenänderung mit aktualisieren AWT, Swing, JavaFX & SWT 11
1 CellEditor mit ComboBox richtig beenden AWT, Swing, JavaFX & SWT 4
L SWT Actionlistener Combobox öffnen AWT, Swing, JavaFX & SWT 4
E Swing CellEditor mit Combobox durch Tastatureingabe editieren?! AWT, Swing, JavaFX & SWT 3
GianaSisters Swing ComboBox im jTable (in bestimmter Zelle nicht über die ganze Spalte) AWT, Swing, JavaFX & SWT 4
T Daten mittels ComboBox in ein JTable adden AWT, Swing, JavaFX & SWT 7
N Filternde Combobox in JTable verliert Fokus nach erster Eingabe AWT, Swing, JavaFX & SWT 2
F Wert zu Eintrag in ComboBox speichern?! AWT, Swing, JavaFX & SWT 7
P Swing ComboBox(en) in JTable auslesen und ausgeben AWT, Swing, JavaFX & SWT 11
M Index von Combobox AWT, Swing, JavaFX & SWT 20
L ComboBox in Action AWT, Swing, JavaFX & SWT 4
D ComboBox & CellListRenderer AWT, Swing, JavaFX & SWT 6
D ComboBox-Model mit Observer AWT, Swing, JavaFX & SWT 3
T ComboBox auslesen AWT, Swing, JavaFX & SWT 11

Ähnliche Java Themen

Neue Themen


Oben