Java Ereignisse für Taschenrechner implementieren?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Dies geht folgendermaßen:

public void mouseClick(MouseEvent e){
   String text = ((JButton)e.getSource()).getText();
   //Sonstiges
}

Ich hoffe, ich konnte dir helfen; wenn du noch Fragen hast, kommentiere einfach.

LG Willibergi

7

Ich habe mal was probiert komm aber noch nicht klar damit.

Jetzt wird immer die Zahl die geklickt wird,auf das Textfeld gesetzt. Ja wie kann man das ändern das bereits Geklicktes bestehen bleibt?

ActionListener al =new ActionListener(){

public void actionPerformed(ActionEvent e){
String text = ((JButton)e.getSource()).getText();
field.setText(text);
}
};

numbers[0].addActionListener(al);
numbers[1].addActionListener(al);
numbers[2].addActionListener(al);
numbers[3].addActionListener(al);
numbers[4].addActionListener(al);
numbers[5].addActionListener(al);
numbers[6].addActionListener(al);
numbers[7].addActionListener(al);
numbers[8].addActionListener(al);
numbers[9].addActionListener(al);
C.addActionListener(al);
0
46

Du liest aus, was momentan im Textfeld steht und änderst den Inhalt in den momentanen Inhalt und die gewünschte Erweiterung:

...
field.setText(field.getText()+text);
...

LG Willibergi

0
7
@Willibergi

Vielen Dank hat mir sehr geholfen.

Vielleicht werde ich später nochmal auf Sie zurückkommen wegen etwaigen Fragen.

0
46

Aber klar doch. :)

Gern geschehen! ;)

LG Willibergi

0
7
@Willibergi

Guten Tag, ich habe nun überlegt wie ich die eigentliche Rechnung einfügen kann, ich beschränke mich auf +,-,*,/ keine Wurzel oder sonstwas aber ein Umwandler ins Negative und ein Kommasetzer wolle ich schon implementieren. 

Wahrscheinlich muss man über:

if(g.getSource() == sum){

c=1;
}
else if(g.getSource() == sub){
c=2;
}
else if (g.getSource() == mult){

}
else if (g.getSource() == div){
}
}

die Operanten abfragen und dann eine Variable setzen c=1 für +,c=2 für - usw. Dann habe ich mit dem String text die erste Zahl, danach kommt der Operant und dann müsste man noch die zweite Zahl abfragen. Aber was ist wenn man mehrmals hintereinander addiert oder dividiert dann geht das alles nicht. Vielleicht habe Sie eine Idee wie man das lösen könnte. 

Ich habe ein Taschenrechnerprogramm von jemand anderem gesehen, bei dem war es möglich mehrere Kommata zu setzen, das müsste man auch noch verhindern. Allerdings lass ich das vorerst beiseite, Hauptsache man kann erstmal die Rechnungen durchführen.

0
46

Die eingegebenen Zahlen müssen systematisch gespeichert werden.
Rechenzeichen sollten der Einfachheit halber nicht in der Ausgabe erscheinen.

Zu der Sachen mit mehreren Dezimalkommas:

Bei einem Klick auf das Komma wird geprüft, ob in dem aktuellen Operanden bereits ein Komma existiert. Wenn ja, passiert nichts. Wenn nicht, wird ein Komma gesetzt.

LG Willibergi

0

schau dir erst einmal an, wie man ganz grundlegend Buttons verwendet und implementieren muss.  Der Button braucht einen ClickListener, welcher eine Methode aufruft.  In diese kannst du dann schreiben, was passieren soll, wenn dieser Button gedrückt wird. 

z.B.

Das muss in den Konstruktor, bzw in die Methode, die den Button initialisiert:

jButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jButton_ActionPerformed(evt);
}
});


Das ist die Methode die aufgerufen wird

public void jButton_ActionPerformed(ActionEvent evt){

jTextField.setText(jTextField.getText()+"hinzuzufügender Text/Zahl");

}

Was möchtest Du wissen?