Calculator - Buttons zusammenfassen

Status
Nicht offen für weitere Antworten.

beezie

Mitglied
Hallo,

hätte zwei Fragen, und hoffe ihr könnt mir helfen.

Ich habe einen Taschenrechner programmiert, aber er reagiert nur auf einen Mausklick, kann ich irgendwas eingeben damit er auf die Tastatur auch "hört"?

Und ich habe verschiedene Buttons, die aber alle den gleichen Code haben, kann ich das zusammenfassen um Platz usw.. zu sparen.
Hier mal der Code:

[HIGHLIGHT="Java"]private void buttonPlusActionPerformed(java.awt.event.ActionEvent evt) {
pruefung = false;
if (operator == 0) {
operands.add(Double.parseDouble(jTextPane1.getText()));
}
else {
/*
* Ich hole mir den Text vom Textfeld
* Der Text wird in ein Double umgewandelt
* Von der ArrayList wird die Zahl, die an oberster Stelle steht, dazugezählt.
*
* */
if (operator == '+') {
operands.add(operands.remove(operands.size()-1) + Double.parseDouble(jTextPane1.getText()));
}

if (operator == '-') {
operands.add(operands.remove(operands.size()-1) - Double.parseDouble(jTextPane1.getText()));
}
if (operator == '*') {
operands.add(operands.remove(operands.size()-1) * Double.parseDouble(jTextPane1.getText()));
}
if (operator == '/') {
operands.add(operands.remove(operands.size()-1) / Double.parseDouble(jTextPane1.getText()));
}

jTextPane1.setText("" + operands.get(operands.size()-1));
}
operator = '+';
}

private void buttonMinusActionPerformed(java.awt.event.ActionEvent evt) {
pruefung = false;
if (operator == 0) {
operands.add(Double.parseDouble(jTextPane1.getText()));
}
else {

if (operator == '+') {
operands.add(operands.remove(operands.size()-1) + Double.parseDouble(jTextPane1.getText()));
}

if (operator == '-') {
operands.add(operands.remove(operands.size()-1) - Double.parseDouble(jTextPane1.getText()));
}
if (operator == '*') {
operands.add(operands.remove(operands.size()-1) * Double.parseDouble(jTextPane1.getText()));
}
if (operator == '/') {
operands.add(operands.remove(operands.size()-1) / Double.parseDouble(jTextPane1.getText()));
}

jTextPane1.setText("" + operands.get(operands.size()-1));
}
operator = '-';
}

private void buttonMultiplikationActionPerformed(java.awt.event.ActionEvent evt) {
pruefung = false;
if (operator == 0) {
operands.add(Double.parseDouble(jTextPane1.getText()));
}
else {

if (operator == '+') {
operands.add(operands.remove(operands.size()-1) + Double.parseDouble(jTextPane1.getText()));
}

if (operator == '-') {
operands.add(operands.remove(operands.size()-1) - Double.parseDouble(jTextPane1.getText()));
}
if (operator == '*') {
operands.add(operands.remove(operands.size()-1) * Double.parseDouble(jTextPane1.getText()));
}
if (operator == '/') {
operands.add(operands.remove(operands.size()-1) / Double.parseDouble(jTextPane1.getText()));
}

jTextPane1.setText("" + operands.get(operands.size()-1));
}
operator = '*';
}[/HIGHLIGHT]


Danke im Vorraus,

liebe grüße
 
Zuletzt bearbeitet von einem Moderator:

Hadernlump

Mitglied
füge deinem Fenster einen KeyListener hinzu, der zu den betätigten zahlen und rechenzeichen die gewünschten aktionen ausführt. Meines Wissens gibt es keine möglichkeit den Buttons einen Shortcut zuzuweisen.

Gruß Hadernlump
 

beezie

Mitglied
das heißt ich muss für alle buttons plus minus, mal, geteilt die funktion extra hinschreiben obwohl es die gleich funktion ist?
 

Hadernlump

Mitglied
Du könntest die funktionalität in eine eigene Methode (oder Klasse) schreiben und die Listener nur noch die benötigten aufrufe machen lassen

[HIGHLIGHT="Java"]
public class Funktion
{
public void add(char c)
{
...
}
}

...

Funktion f = new Funktion();

ActionListener al = new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
String text = ((JButton)arg0.getSource()).getText();
// Angenommen jeder Button hat nur das eine Char das die
Funktionalität beschreibt (+, - 0, 1, ...)
char c = text.toCharArray()[0];

f.add(c);
}
}

KeyListener kl = new KeyAdapter()
{
public void keyTyped(KeyEvent arg0)
{
char c = arg0.getKeyChar();
f.add(c);
}
}

};
[/HIGHLIGHT]

Ich hoffe man kann verstehen was ich damit sagen will

Gruß Hadernlump
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Ja neee... ein bißchen Inspiration kannst du dir für die allgemeine Struktur (redundanzvermeidung) schonmal hier holen http://www.java-forum.org/java-faq-beitraege/49255-componenten-und-listener.html

In diesem Fall wäre es aber vielleicht sogar günstiger oder eleganter, Actions zu verwenden. Dann kannst du eine ActionMap erstellen, die die Tasten auf die passenden Actions mapps, so dass bei einem Muasklick auf den Button oder einem Tastendruch wirklich dieselbe Action ausgeführt wird... Siehe How to Use Key Bindings (The Java™ Tutorials > Creating a GUI with JFC/Swing > Using Other Swing Features) und How to Use Actions (The Java™ Tutorials > Creating a GUI with JFC/Swing > Using Other Swing Features)
 

beezie

Mitglied
Ja ich hab mir gedacht, dass ich für diese Rechnungen eine Methode anlege.
So brauche ich die Buttons doch nur mit der Methode zu verknüpfen oder?
Aber ich weiß nicht mehr so genau wie ich anfangen soll.

Hätte mir gedacht mit

Code:
private void Funktion () {
  pruefung = false;
   if (operator == 0) {
    operands.add(Double.parseDouble(jTextPane1.getText()));
  } 
  else {
    
    if (operator == '+') {
      operands.add(operands.remove(operands.size()-1) + Double.parseDouble(jTextPane1.getText()));
    }
   
    if (operator == '-') {
      operands.add(operands.remove(operands.size()-1) - Double.parseDouble(jTextPane1.getText()));
    }
    if (operator == '*') {
      operands.add(operands.remove(operands.size()-1) * Double.parseDouble(jTextPane1.getText()));
    }
    if (operator == '/') {
      operands.add(operands.remove(operands.size()-1) / Double.parseDouble(jTextPane1.getText()));
    }

    jTextPane1.setText("" + operands.get(operands.size()-1));
  }
  operator = '/';
}
Kann das so richtig sein?

lg
 

Marco13

Top Contributor
Das einzig spezifische an der Methode is das
operator = '/';
am Ende. Das '/' könnte man als Argument übergeben ... oder so... es gibt da 100 Möglichkeiten...
 

beezie

Mitglied
ist die Funktion, die ich geschrieben habe dann richtig? oder muss ich irgendwas ändern sodass ich sie auf meine buttons anwenden kann?
lg
 

Marco13

Top Contributor
Naja, die Funktion würde dann von der "actionPerformed"-Methode einer Action aus aufgerufen werden. Ob sie "richtig" ist... nun... im Mathematischen Sinne? Sicher nicht... Aber... es würde grundsätzlich genausogut oder schlecht funktionieren, wie vorher: Überall da, wo du bisher all das, was jetzt in der Methode steht, hingeschrieben hattest, kannst du jetzt dann einfach
Funktion();
oder besser
funktion('+');
oder noch besser
applyOperation('+');
oder so hinschreiben...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Operatoren Rechenoperation in Java verwenden für Calculator Java Basics - Anfänger-Themen 2
D Hilfe bei Calculator Test Java Basics - Anfänger-Themen 15
Z Datentypen Stack based calculator Java Basics - Anfänger-Themen 8
F Erste Schritte Subnet Calculator - Ausgabe der NetID und der Broadcast Java Basics - Anfänger-Themen 4
N Frage zu meinem Calculator Java Basics - Anfänger-Themen 6
J Calculator java Java Basics - Anfänger-Themen 9
W Calculator Java Basics - Anfänger-Themen 7
B Calculator Fehlermeldung ich finde aber nichts? Java Basics - Anfänger-Themen 2
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
Jxhnny.lpz Randomisier für Buttons Java Basics - Anfänger-Themen 13
R Buttons ohne Funktion Java Basics - Anfänger-Themen 2
yoskaem Text Color durch Klicken eines Buttons in anderer Activity ändern Java Basics - Anfänger-Themen 2
D Custom Buttons oder Custom Combobox Java Basics - Anfänger-Themen 30
A Aktualisierung eines Buttons Java Basics - Anfänger-Themen 18
S Runde Buttons erstellen Java Basics - Anfänger-Themen 10
J Input/Output Input Buttons Html mit JSP Java Basics - Anfänger-Themen 3
F Mehrere Buttons mit einem ActionListener abdecken Java Basics - Anfänger-Themen 24
T Buttons... Java Basics - Anfänger-Themen 1
U Javafx Array aus Buttons Java Basics - Anfänger-Themen 2
L Buttons außerhalb der sichtbaren Activity Java Basics - Anfänger-Themen 8
E Hilfe bei Buttons (GUI) Java Basics - Anfänger-Themen 3
D Mit Buttonklick Farbe der anderen Buttons verändern? Java Basics - Anfänger-Themen 2
L Buttons ansprechen Java Basics - Anfänger-Themen 1
F Mehrfaches Clicken eines Buttons Java Basics - Anfänger-Themen 1
H Buttons zeigen keine Reaktion Java Basics - Anfänger-Themen 6
E Wenn i (for-Loop) bestimmter Wert, dann neue Zeile eines Buttons Java Basics - Anfänger-Themen 7
H Java Buttons ausblenden bei inaktivität Java Basics - Anfänger-Themen 1
A Nach Druck eines Buttons reagieren andere Button nicht Java Basics - Anfänger-Themen 3
R Problem mit ActionListener für Buttons Java Basics - Anfänger-Themen 5
D Variable Anzahl an Buttons per Schleife Java Basics - Anfänger-Themen 7
U Best Practice Buttons sollen ÜBER Labeln liegen, also quasi im Vordergrund. WIE? Java Basics - Anfänger-Themen 4
TheSorm Anzeige fehler eines Buttons Java Basics - Anfänger-Themen 3
M Icons auf Buttons Java Basics - Anfänger-Themen 9
S Variablen Variable bei drücken eines Buttons ändern Java Basics - Anfänger-Themen 1
M Buttons funktionieren nicht Java Basics - Anfänger-Themen 4
lord239123 Buttons werden nicht angezeigt Java Basics - Anfänger-Themen 3
D Erste Schritte Buttons mit actionlistener Problem Java Basics - Anfänger-Themen 3
M Größe eines Buttons festlegen Java Basics - Anfänger-Themen 4
W Buttons sollen bei Mausklick einen String schreiben Java Basics - Anfänger-Themen 11
J Aktivierung eines Buttons nach Eingabe in Textfeldern (DocumentListener) Java Basics - Anfänger-Themen 4
O Position des Buttons wird nicht geändert.. Java Basics - Anfänger-Themen 6
K Erste Schritte GUI - Hintergrundbild und darauf Buttons Java Basics - Anfänger-Themen 2
J BlueJ canvas Buttons adden? Java Basics - Anfänger-Themen 2
U Methoden Methode zur Erstellung von Buttons Java Basics - Anfänger-Themen 11
H Icons in Buttons resizable? Java Basics - Anfänger-Themen 3
C Buttons über Textfeld beschriften Java Basics - Anfänger-Themen 10
L OOP Buttons mit Pfeilen miteinander verbinden Java Basics - Anfänger-Themen 5
A Dropdown Liste - mit je zwei Verlinkungen und zwei ausführende Buttons Java Basics - Anfänger-Themen 3
I Dynamisch erzeugten Buttons Methoden zuweisen Java Basics - Anfänger-Themen 6
P Listener für mehrere Buttons Java Basics - Anfänger-Themen 3
S Hilfe bei Buttons Java Basics - Anfänger-Themen 2
S Erste Schritte ActionListener auf Buttons einrichten Java Basics - Anfänger-Themen 3
B Die Hintergrundfarbe eines deaktivierten buttons ändern? Java Basics - Anfänger-Themen 4
SheldoN Töne abspielen auf verschiedenen Buttons Java Basics - Anfänger-Themen 17
J durch drücken eines buttons text in einer textdatei speichern Java Basics - Anfänger-Themen 2
G MouseListener für mehrere Buttons Java Basics - Anfänger-Themen 11
Fab1 Buttons auf ein Hintergrundbild(JFrame) setzen Java Basics - Anfänger-Themen 24
H Methode aufrufen beim Drücken eines Buttons im Boxlayout Java Basics - Anfänger-Themen 6
M Tabelle mit Buttons Java Basics - Anfänger-Themen 24
M Variablen via actionPerformed mit Buttons ändern Java Basics - Anfänger-Themen 7
K Durch ändern eines Buttons String füllen Java Basics - Anfänger-Themen 14
J Buttons Java Basics - Anfänger-Themen 19
G Buttons in ein Array umformen Java Basics - Anfänger-Themen 11
S Buttons übereinander legen - Reihenfolge Java Basics - Anfänger-Themen 2
M Buttons erscheinen erst bei Mouse-Over Java Basics - Anfänger-Themen 8
B Buttons Java Basics - Anfänger-Themen 9
T Buttons (auf denen bilder sind) random vertauschen Java Basics - Anfänger-Themen 11
1 Menü mit Buttons erstellen Java Basics - Anfänger-Themen 10
M Durchsichtige Buttons Java Basics - Anfänger-Themen 12
P OnClickListener für mehrere Buttons Java Basics - Anfänger-Themen 5
U Buttons einfügen (Leiste verschwunden!?) Java Basics - Anfänger-Themen 2
M Gui - Probleme mit Buttons Java Basics - Anfänger-Themen 4
C Swing, Buttons Wert zuweisen Java Basics - Anfänger-Themen 3
E Android: OnClickListener erkennt Buttons nicht Java Basics - Anfänger-Themen 7
E Buttons in Android generieren? Java Basics - Anfänger-Themen 4
D Link over Buttons Java Basics - Anfänger-Themen 4
B Identifikation eines einzelnen Buttons aus mehreren Buttons per Schleife erzeugten Java Basics - Anfänger-Themen 4
Nicer Radio Buttons Gruppe Java Basics - Anfänger-Themen 2
G getControlPanelComponent JMF Buttons verstecken? Java Basics - Anfänger-Themen 7
K Buttons Funktionieren Nicht!!! Java Basics - Anfänger-Themen 8
manunana89 2 ActionListener auf 2 Buttons??? Java Basics - Anfänger-Themen 6
Mike90 verschieben von Buttons, ... Java Basics - Anfänger-Themen 18
F Buttons und Aktionen Java Basics - Anfänger-Themen 20
M dynamisches Clipboard mit Buttons Java Basics - Anfänger-Themen 5
H Buttons um sprache zu ändern. Java Basics - Anfänger-Themen 6
0 Buttons mit Absatz Java Basics - Anfänger-Themen 6
B Buttons erstellen! Wie? Java Basics - Anfänger-Themen 2
D Buttons-die Wahrheit über sie Java Basics - Anfänger-Themen 11
G Buttons mit MouseOver Java Basics - Anfänger-Themen 5
M "Selbst erstellte" Buttons nicht sichtbar. Java Basics - Anfänger-Themen 20
Mörmel Variable Anzahl von Buttons erzeugen Java Basics - Anfänger-Themen 6
K Fenster mit Buttons hin und her schieben ? Java Basics - Anfänger-Themen 23
A in jTextField mit Hilfe von Buttons schreiben Java Basics - Anfänger-Themen 2
J Buttons Java Basics - Anfänger-Themen 3
M Buttons auf allen Masken Java Basics - Anfänger-Themen 4
G Alle Buttons in einer For Schleife ändern Java Basics - Anfänger-Themen 5
G Nicht benannte Buttons - Wenn gedrückt > Action Java Basics - Anfänger-Themen 24
T Buttons Resetten Java Basics - Anfänger-Themen 2
G Grafische Oberfläche mit Buttons und Actionlistener? Java Basics - Anfänger-Themen 27
D Buttons gehen trotz enebled(false) Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben