Hallo!
Ich bin im Rahmen eines Projektes dabei einen Taschenrechner zu programmieren. Dieser ist auch so gut wie fertig. Leider gelingt es mir nicht die Klammern mit in die Benutzung einzubringen. Ich hab nun schon etliche Stunden versucht hier etwas zu finden.
Meine Lösung bisher:
Kann mir hier einer weiterhelfen??
Ich bin im Rahmen eines Projektes dabei einen Taschenrechner zu programmieren. Dieser ist auch so gut wie fertig. Leider gelingt es mir nicht die Klammern mit in die Benutzung einzubringen. Ich hab nun schon etliche Stunden versucht hier etwas zu finden.
Meine Lösung bisher:
Kann mir hier einer weiterhelfen??
Code:
import java.awt.Button;
import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JTextField;
public class Taschenrechner extends Frame {
private static final long serialVersionUID = 1L;
// Instanzvariablen
private JTextField eingabeFeld;
private Panel nummernTasten, operationsTasten, clearTasten, klammerBack;
private Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,bPuM,bK,bPlus,bMinus,bMal,
bDurch,bGleich,bBack,bKla,bKlz,bCE,bC;
private boolean bEqual = true;
private double Operand1 = 0;
private String Operator1="";
//Konstruktor
public Taschenrechner() {
//Aufbau der Rechner GUI
RechnerGUI();
//Zusammensetzen der Komponenten
add(eingabeFeld);
add(nummernTasten);
add(operationsTasten);
add(klammerBack);
add(clearTasten);
//zum schliessen des Fensters
addWindowListener( new schliesseMeinFenster() );
}
public void RechnerGUI() {
//Position und Größe(int x, int y, int width, int height)
setBounds(300, 200, 245, 330); // Größe des Rahmens
setResizable(false); // kein Maximieren möglich
setTitle(" Calc ");
setBackground(Color.lightGray);
setLayout(null);
eingabeFeld = new JTextField("Guten Tag !!");//JTextField() da hier rechtsbündig möglich
eingabeFeld.setHorizontalAlignment(JTextField.RIGHT); // rechtsbündig
eingabeFeld.setEditable(false); // man kann etwas in Display schreiben
eingabeFeld.requestFocus(); // hat im Rechner den Focus
eingabeFeld.setForeground(Color.yellow);
eingabeFeld.setFont(new Font("Serif", Font.BOLD, 20));
eingabeFeld.setBackground(Color.black);
eingabeFeld.setBounds(15, 30, 213, 35);
nummernfeld(); // Methode zum Einfügen der Zahlentasten
}
public void nummernfeld() {
nummernTasten = new Panel();
nummernTasten.setForeground(Color.blue);
nummernTasten.setBounds(15, 160, 160, 160);
nummernTasten.setLayout(new GridLayout(4, 3, 7, 7));
b7 = new Button("7"); nummernTasten.add(b7); b7.addActionListener(new Ereignis());
b8 = new Button("8"); nummernTasten.add(b8); b8.addActionListener(new Ereignis());
b9 = new Button("9"); nummernTasten.add(b9); b9.addActionListener(new Ereignis());
b4 = new Button("4"); nummernTasten.add(b4); b4.addActionListener(new Ereignis());
b5 = new Button("5"); nummernTasten.add(b5); b5.addActionListener(new Ereignis());
b6 = new Button("6"); nummernTasten.add(b6); b6.addActionListener(new Ereignis());
b1 = new Button("1"); nummernTasten.add(b1); b1.addActionListener(new Ereignis());
b2 = new Button("2"); nummernTasten.add(b2); b2.addActionListener(new Ereignis());
b3 = new Button("3"); nummernTasten.add(b3); b3.addActionListener(new Ereignis());
b0 = new Button("0"); nummernTasten.add(b0); b0.addActionListener(new Ereignis());
bPuM = new Button("+/-");nummernTasten.add(bPuM); bPuM.addActionListener(new Ereignis());
bK = new Button("."); nummernTasten.add(bK);bK.addActionListener(new Ereignis());
operationsfeld(); // Methode für Rechenoperationen
}
public void operationsfeld() {
operationsTasten = new Panel();
operationsTasten.setForeground(Color.red);
//x, y, Breite der Tasten, Höhe der Tasten
operationsTasten.setBounds(180, 120, 48, 198);
//Zeile, Spalte
operationsTasten.setLayout(new GridLayout(5, 1, 7, 7));
bPlus = new Button("+"); operationsTasten.add(bPlus); bPlus.addActionListener(new Ereignis());
bMinus = new Button("-"); operationsTasten.add(bMinus); bMinus.addActionListener(new Ereignis());
bMal = new Button("*"); operationsTasten.add(bMal); bMal.addActionListener(new Ereignis());
bDurch = new Button("/"); operationsTasten.add(bDurch); bDurch.addActionListener(new Ereignis());
bGleich = new Button("="); operationsTasten.add(bGleich);bGleich.addActionListener(new Ereignis());
KlammernUndZurueck(); //Methode für Klammern und Back
}
public void KlammernUndZurueck() {
klammerBack = new Panel();
klammerBack.setForeground(Color.red);
klammerBack.setBounds(15, 120, 160, 34);
klammerBack.setLayout(new GridLayout(1, 4, 7, 7));
bBack = new Button("Back"); klammerBack.add(bBack); bBack.addActionListener(new Ereignis());
bKla = new Button("("); klammerBack.add(bKla); bKla.addActionListener(new Ereignis());
bKlz = new Button(")"); klammerBack.add(bKlz); bKlz.addActionListener(new Ereignis());
clearfeld(); //Methode für Löschtasten
}
public void clearfeld() {
clearTasten = new Panel();
clearTasten.setForeground(Color.red);
clearTasten.setBounds(15, 75, 213, 35);
clearTasten.setLayout(new GridLayout(1, 2, 7, 0));
bCE = new Button("CE"); clearTasten.add(bCE); bCE.addActionListener(new Ereignis());
bC = new Button("C"); clearTasten.add(bC); bC.addActionListener(new Ereignis());
}
/**
* Das ist ein passender WindowAdapter auf das Interface WindowListener.
* Hier haben die Java Entwickler eine Arbeitserleichterung vorgesehen!!
*/
class schliesseMeinFenster extends WindowAdapter{
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
public class Ereignis implements ActionListener{
public void actionPerformed(ActionEvent e) {
int h;
if( e.getActionCommand() == b0.getLabel()){
ziffer("0");
}
if( e.getActionCommand() == b1.getLabel()){
ziffer("1");
}
if( e.getActionCommand() == b2.getLabel()){
ziffer("2");
}
if( e.getActionCommand() == b3.getLabel()){
ziffer("3");
}
if( e.getActionCommand() == b4.getLabel()){
ziffer("4");
}
if( e.getActionCommand() == b5.getLabel()){
ziffer("5");
}
if( e.getActionCommand() == b6.getLabel()){
ziffer("6");
}
if( e.getActionCommand() == b7.getLabel()){
ziffer("7");
}
if( e.getActionCommand() == b8.getLabel()){
ziffer("8");
}
if( e.getActionCommand() == b9.getLabel()){
ziffer("9");
}
//Addition
if (e.getActionCommand() == bPlus.getLabel()) {
operation("+");
}
//Subtraktion
if (e.getActionCommand() == bMinus.getLabel()) {
operation("-");
}
//Multiplikation
if (e.getActionCommand() == bMal.getLabel()) {
operation("*");
}
//Division
if (e.getActionCommand() == bDurch.getLabel()) {
operation("/");
}
//Gleich (Ergebnis)
if (e.getActionCommand() == bGleich.getLabel()) {
operation("");
}
// Komma
if (e.getActionCommand() == bK.getLabel()) {
if (bEqual) {
eingabeFeld.setText("0.");
bEqual = false;
}
else {
String sValue = new String(eingabeFeld.getText());
h = sValue.indexOf(".");
if (h < 0) {
eingabeFeld.setText(eingabeFeld.getText() + ".");
}
}
}
// Vorzeichenwechsel
if (e.getActionCommand() == bPuM.getLabel() && eingabeFeld.getText().length() > 0) {
if (eingabeFeld.getText().charAt(0)=='-')
eingabeFeld.setText(eingabeFeld.getText().substring(1,eingabeFeld.getText().length()));
else
eingabeFeld.setText('-'+eingabeFeld.getText());
}
// Backspace (löschen)
if (e.getActionCommand().equals("Back")){
if (eingabeFeld.getText().length() != 0)
eingabeFeld.setText(eingabeFeld.getText().substring(0, eingabeFeld.getText().length() - 1));
}
// Clear Entry: letzte Eingabe rückgängig machen
if (e.getActionCommand().equals("CE")&& eingabeFeld.getText().length() > 0){
eingabeFeld.setText(null);
}
// Löschen
if (e.getActionCommand().equals("C")){
eingabeFeld.setText("");
Operand1=0;
Operator1="";
}
}
}
/**
* Wird aufgerufen, wenn die Ereignisbehandlung eine Zifferntaste erkannt
* hat.
*/
public void ziffer(String s) {
if (bEqual) {
eingabeFeld.setText(s);
bEqual = false;
} else {
eingabeFeld.setText(eingabeFeld.getText()+ s);
}
}
/**
* Wird aufgerufen, wenn die Ereignisbehandlung ein Opperationszeichen
* erkannt hat.
*/
public void operation(String s) {
Double d1;
bEqual = true;
try {
if (Operator1 == "") {
d1 = new Double(eingabeFeld.getText());
Operand1 = d1.doubleValue();
Operator1 = s;
} else {
d1 = new Double(eingabeFeld.getText());
if (Operator1 == "+") {
Operand1 = Operand1 + d1.doubleValue();
} else if (Operator1 == "-") {
Operand1 = Operand1 - d1.doubleValue();
} else if (Operator1 == "*") {
Operand1 = Operand1 * d1.doubleValue();
} else if (Operator1 == "/") {
Operand1 = Operand1 / d1.doubleValue();
}
Operator1 = s;
eingabeFeld.setText(String.valueOf(Operand1));
}
} catch (ArithmeticException e) {
eingabeFeld.setText("Error:" + e);
} catch (Throwable e) {
eingabeFeld.setText("Fehler:" + e);
}
}
}