Mein erster kleiner JAVA Taschenrechner

Das erste Netbeans Projekt von heute Vormittag habe ich noch einmal in den Papierkorb verschoben und erneut von Anfang angefangen. Also ran: SWING GUI mit einem JApplet. Soweit so gut. Meine Kollegen (Linux’er) würden jetzt von „Klickibunti“ sprechen. Also ganz mein Fall! Einmal Textbox, diverse Buttons, schon sieht es nach einem Taschenrechner aus. Dann noch die Beschriftungen und Namen der Elemente setzen. Nun geht es an die eigentliche Arbeit. Was passiert eigentlich bei einem Taschenrechner? Ich habe ein Textfeld und Eingabe-Buttons. Drücke ich eine Zahl, so wird diese an die Zahl im Textfeld angefügt. D.h. ich muss im Wesentlichen beachten, dass das, was im Textfeld steht auch weiterhin dort bleit und durch den Wert des Buttons ergänzt wird. Angenommen das Textfeld hat de Wert 1, ich drücke die 2, dann enthält die Textbox nun den String-Wert 12. Ich brauche zur Berechnung demnach zunächst mindestens zwei Zahlenwerte. Die erste Zahl, dann eine Operation (String) und eine zweite Zahl.

Meine Klasse für die GUI wird wie folgt definiert:

public class GUI extends javax.swing.JApplet {

    double ersteZahl;
    double zweiteZahl;
    double ergebnis;
    String operation;
    String val;
    String con; 
         
    
    @Override
    public void init() {

        this.resize(500, 600);

        try {
            java.awt.EventQueue.invokeAndWait(new Runnable() {
                public void run() {
                    initComponents();
                }
            });
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

 
    @SuppressWarnings("unchecked")

Für jeden Button werden per Netbeans automatisch alle Eigenschaften angelegt.

btn1.setBackground(new java.awt.Color(255, 255, 255));
        btn1.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
        btn1.setText("1");
        btn1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        btn1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btn1ActionPerformed(evt);
            }
        });

Und damit das ganze auch funktioniert, hier noch etwas Logik mit ein bisschen Fehlerbehandlung (Division mit 0).

private void btn1ActionPerformed(java.awt.event.ActionEvent evt) {                                     
        val = display.getText() + btn1.getText();
        display.setText(val);
        con = console.getText();
        console.setText(con+btn1.getText()); 
    }                                    

    private void btn2ActionPerformed(java.awt.event.ActionEvent evt) {                                     
        val = display.getText() + btn2.getText();        
        display.setText(val);
        con = console.getText();
        console.setText(con+btn2.getText());
    }                                    

    private void btn3ActionPerformed(java.awt.event.ActionEvent evt) {                                     
        val = display.getText() + btn3.getText();        
        display.setText(val);
        con = console.getText();
        console.setText(con+btn3.getText());
    }                                    

    private void btn4ActionPerformed(java.awt.event.ActionEvent evt) {                                     
        val = display.getText() + btn4.getText();        
        display.setText(val);
        con = console.getText();
        console.setText(con+btn4.getText());
    }                                    

    private void btn5ActionPerformed(java.awt.event.ActionEvent evt) {                                     
        val = display.getText() + btn5.getText();        
        display.setText(val);
        con = console.getText();
        console.setText(con+btn5.getText());
    }                                    

    private void btn6ActionPerformed(java.awt.event.ActionEvent evt) {                                     
        val = display.getText() + btn6.getText();        
        display.setText(val);
        con = console.getText();
        console.setText(con+btn6.getText());
    }                                    

    private void btn7ActionPerformed(java.awt.event.ActionEvent evt) {                                     
        val = display.getText() + btn7.getText();        
        display.setText(val);
        con = console.getText();
        console.setText(con+btn7.getText());
    }                                    

    private void btn8ActionPerformed(java.awt.event.ActionEvent evt) {                                     
       val = display.getText() + btn8.getText();        
        display.setText(val);
        con = console.getText();
        console.setText(con+btn8.getText());
    }                                    

    private void btn9ActionPerformed(java.awt.event.ActionEvent evt) {                                     
       val = display.getText() + btn9.getText();        
        display.setText(val);
        con = console.getText();
        console.setText(con+btn9.getText());
    }                                    

    private void btn0ActionPerformed(java.awt.event.ActionEvent evt) {                                     
        val = display.getText() + btn0.getText();        
        display.setText(val);
        con = console.getText();
        console.setText(con+btn0.getText());
    }                                    

    private void btncancelActionPerformed(java.awt.event.ActionEvent evt) {                                          
        display.setText("");
        console.setText("");
    }                                         

    private void btnplusActionPerformed(java.awt.event.ActionEvent evt) {                                        
        ersteZahl = Double.parseDouble(display.getText());
        operation = "+";
        display.setText("");
        con = console.getText();
        console.setText(con +  " + ");
        
    }                                       

    private void btnminusActionPerformed(java.awt.event.ActionEvent evt) {                                         
        ersteZahl = Double.parseDouble(display.getText());
        operation = "-";
        display.setText("");
        con = console.getText();
        console.setText(con +  " - ");
    }                                        

    private void btnmultiActionPerformed(java.awt.event.ActionEvent evt) {                                         
        ersteZahl = Double.parseDouble(display.getText());
        operation = "x";
        display.setText("");
        con = console.getText();
        console.setText(con +  " x ");
    }                                        

    private void btndiviActionPerformed(java.awt.event.ActionEvent evt) {                                        
        ersteZahl = Double.parseDouble(display.getText());
        operation = "/";
        display.setText("");
        con = console.getText();
        console.setText(con +  " / ");
    }                                       

    private void btnergActionPerformed(java.awt.event.ActionEvent evt) {                                       
        switch(operation){
            case("+"):
                ergebnis = ersteZahl + Double.parseDouble(display.getText());
                break;
            case("-"):
                ergebnis = ersteZahl - Double.parseDouble(display.getText());
                break;
            case("x"):
                ergebnis = ersteZahl * Double.parseDouble(display.getText());
                break;
            case("/"):
                if(Double.parseDouble(display.getText()) != 0 && ersteZahl != 0){
                    ergebnis = ersteZahl / Double.parseDouble(display.getText());
                }else{  
                    ergebnis = 0;
                    console.setText("FEHLER! Division durch 0");
                }
                break;
            default:
                display.setText("Error:Default in SwitchCase");
        }
        display.setText(Double.toString(Math.round(ergebnis*100)/100.0));
        con = console.getText();
        console.setText(con +  " = " + Double.toString(ergebnis));
    }                                      

    private void btnplusminusActionPerformed(java.awt.event.ActionEvent evt) {                                             
        display.setText(Double.toString(Double.parseDouble(display.getText())*-1));
        con = console.getText();
        console.setText(con +  " [+/-] ");
    }   

die Projektdateien hier als ZIP Calc.zip

Von Alexander

Das Projekt derFernstudent.de ist für mich gleichermaßen Dokumentation und Erfahrungsbericht. Als Erfahrungsbericht für mein Fernstudium gestartet, dient es nun als Plattform, um mein Hobby und Wissen zu teilen. Ergänzt wird die Seite durch den YouTube Kanal

2 Kommentare

  1. „Und jedem Anfang wohnt ein Zauber inne“…
    Ein gutes Gefühl, wenn die ersten Schritte zu einem Zwischenziel führen!
    Nur so lernt man laufen, auch in unbekanntem Terrain.

    1. Und was ich nun gut einen Monat später sagen kann: Man muss bereit sein, noch einmal neu anzufangen. Mir ist relativ schnell klar geworden, dass für mein Lernen Netbeans überhaupt nicht förderlich ist. Grund: es nimmt dir einfach alles ab. Als Notepad++ und die Powesershell „rausgekramt“ und mich erst einmal mit Layout-Managern beschäftigt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.