Taschenrechner

Mr.Mase

Mitglied
Hey,

ich muss für die Schule einen simplen Taschenrechner erstellen.
Voraussetzung: das ganze muss in Startklasse und Fachklasse getrennt sein.

Das alles ist ja eig. kein Problem aber beim Tastenfeld komm ich nicht weiter.
Hab die Oberfläche des Taschenrechners in Eclipse mal erstellt.

Bis hier her klappt alles aber wie mach ich es mit dem Tastenfeld hab ja 10 Tasten 0-9

muss ich jetzt auch 10 ActionListener schreiben oder geht das irgendwie einfacher ?

Ich bitte um Hilfe, bin jetzt zwar kein Profi was JAVA anbelangt aber es macht mir Spaß damit zu arbeiten.

Gruß Mr.Mase
 

kaoZ

Top Contributor
Du kannst auch einfach einen Listener implementieren, den einzelnen Buttons weist du dann sogenannte
Code:
Action Commands
zu , welche du später in der
Code:
actionPerformed();
methode z.B mit einem Switch abrufen könntest

Java:
Button one = new Button("+");
one.setActionCommand("PLUS");

public class Foo implements ActionListener{

...

@Override
public void actionPerformed(ActionEvent event)

switch(event.getActionCommand()){

case "PLUS":
  // do stuff
break;

usw...

}
}

natürlich ginge auch ein abruf über
Code:
event.getSource()
was ich allerdings für unschön halte :)
 
Zuletzt bearbeitet:

kaoZ

Top Contributor
Cool, ich wusste gar nicht, dass es so was gibt in Swing... Gibt's das auch noch in JavaFX?


Also in Swing funktioniert das ohne Probleme, verwende ich selber von Zeit zu Zeit, ob es in JavaFX auch funktioniert kann ich dir leider nicht beantworten dazu habe ich mich noch zu wenig damit beschäftigt ;)

Hier ein schnell zusammgezimmerstes KSKB:

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

import javax.swing.JButton;
import javax.swing.JFrame;


public class Foo extends JFrame implements ActionListener{

	JButton btn;
	
	public Foo() {
		super("Testfenster");
		setSize(500,300);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setLocationRelativeTo(null);
		
		btn = new JButton("Klick mich");
		btn.addActionListener(this);
		btn.setActionCommand("Wuhu"); // Action Command für den Button erstellen.
		
		add(btn);
		
		setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent event) {
		
		switch(event.getActionCommand()){
		case "Wuhu":
			btn.setBackground(Color.CYAN);
			btn.setText("Der Wahnsinn !");
		
			break;
		}
		
	}	
	
	public static void main(String[] args) {
		
		new Foo();
	}
}
 
Zuletzt bearbeitet:

dzim

Top Contributor
Ich hab gestern mal geschaut und nein, es ist nicht in der API enthalten. Schade, aber auch nicht so schlimm, da ich eh primär FXML verwende und die Handler für jedes Control-Widget eh per annotierter Methode bereit stelle.
 

Mr.Mase

Mitglied
Bin mit meinem Projekt etwas weitergekommen.

Hab aber doch noch einmal eine Frage:

Mein Taschenrechner ist aufgeteilt in Fachklasse und Startklasse, die Eingabe von Zahlen in der GUI klappt soweit, doch wie übergebe ich nun am dümmsten meine Rechnung in die Fachklasse zum rechnen ?

Gruß

Mr.Mase
 

Gucky

Top Contributor
Du müsstest dich entscheiden, ob die Methoden zum Rechnen statisch sind, oder nicht.
Dementsprechend müsstest du die Werte übergeben.
 

Gucky

Top Contributor
Wie meinst du das? Er hat gefragt, wie er seine Rechnung in die Fachklassebekommt. Aber dazu müsste er sich erst entscheiden, ob die Methoden statisch sein sollen oder nicht. Statisch wäre mein Favourit. Da gibt es einen, zwar nicht besonders großen, aber dennoch vorhandenen Unterschied.
 

JavaMeister

Gesperrter Benutzer
Gehen wir kurz davon aus, dass es hierfür relevant wäre. Dann würde sich in einer objektorientierten Sprache eher diese Frage nicht stellen. Weiterhin schreibt der TO,d ass er eine Fachklasse und eine GUI klasse hat. Mit größter Wahrscheinlichkeit hat er dies nicht statisch implementiert.

---

Es ist hier aber nicht relevant, weil egal ob statisch oder nicht statisch in beiden Fällen der Wert einfach über eine Referenz übergeben werden kann oder abgeholt werden kann.

---

@TO: Du kannst auf keinen Fall eine konkrete Antwort erhalten, da wir keinen COde haben.
 

Mr.Mase

Mitglied
Hey,

schon mal danke für die Antworten.

ich geb über die Buttons Zahl für Zahl ein, die Zwölf wird dann z.B aus einer Eins un einer Zwei zusammengefügt.
Dann kommt das entsprechende Operationszeichen und die nächste Zahl.

eig. ist das ja dann eine Zeichenkette doch wie übergebe ich diese ?
Meine Idee war:

Java:
               r1.rechnung(Double.parseDouble(txtrDisplay.getText()));
			txtrDisplay.setText(Double.toString(r1.getErgebnis()));

Gruß Mr.Mase
 
Zuletzt bearbeitet:

derSoerrn

Aktives Mitglied
Ich weiß ja nicht genau wie du den Taschenrechner programmierst hast, aber ich würde den String noch darauf überprüfen, ob er z.B. "++" enthält o.ä., da sonst das Programm mMn abstürzen würde.
 

Gucky

Top Contributor
BTW halte ich es für besser, wenn du deine Rechnungsmethode den Wert zurückgeben lässt. Damit sparst du dir eine Zeile Code und eine Variable.

Hast du deinen Rechner DAU sicher gemacht? Wenn jemand etwas eingibt, was nicht als double interpretierbar ist, fliegt eine Exception, was unbehandelt zu nervigen Problemen führen kann. Also entweder du fängst die Exception ab oder du sorgst dafür, dass nur passende Zeichen im Feld stehen, was aufwändiger ist, ich aber für die bessere Lösung halte. Guck dir dazu mal die Regex an.
 

Mr.Mase

Mitglied
Hey,

ich hab mich jetzt mal mit den Kleinigkeiten wie Sinus, Cosinus, Tangens, Wurzel...... beschäftigt.

Mit dem Rechnen komm ich leider immer noch nicht weiter....;(
Ich glaube ich denke einfach mal wieder zu kompliziert..


Die Idee mit der Exception ist gut das wird zum Schluss umgesetzt. :toll:

Ich kann durch meine Idee zwar die Rechnung übergeben aber als Ergebnis liefert der Taschenrechner 0.0. Habt ihr noch ne Idee was ich falsch mach ?
Der Code in der GUI:
Java:
r1.rechnung(Double.parseDouble(txtrDisplay.getText()));
         r1.rechnung();
         txtrDisplay.setText(Double.toString(r1.getErgebnis()));

Der Code in der Fachklasse:
Java:
ergebnis = Double.parseDouble(getRechnung());

Gruß Mr.Mase
 

Gucky

Top Contributor
Hast du schon mal debuggt? Guck mal mit Sysouts oder dem Debugger nach, ob die Rechnungswerte überhaupt ankommen und ab wann 0.0 in der Variable steht ubd vollzieh mal alle Schritte nach.
 
Ä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
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
B Taschenrechner mit ComboBox AWT, Swing, JavaFX & SWT 7
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

Ähnliche Java Themen

Neue Themen


Oben