Questa è una semplice calcolatrice fatta in Java con una semplice interfaccia grafica fatta con NetBeans. Ma in questo articolo vi spiegherò solo le varie funzioni dei pulsanti della calcolatrice.

public class Calcolatrice extends javax.swing.JFrame
{


    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton10;
    private javax.swing.JButton jButton11;
    private javax.swing.JButton jButton12;
    private javax.swing.JButton jButton13;
    private javax.swing.JButton jButton14;
    private javax.swing.JButton jButton15;
    private javax.swing.JButton jButton16;
    private javax.swing.JButton jButton17;
    private javax.swing.JButton jButton19;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton20;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JButton jButton5;
    private javax.swing.JButton jButton6;
    private javax.swing.JButton jButton7;
    private javax.swing.JButton jButton8;
    private javax.swing.JButton jButton9;
    private javax.swing.JButton jButton21;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JTextField jTextField1;

public Calcolatrice()
{
        initComponents();
}

double[] formula=new double[2];
String b="";

Qui dichiaro alcune variabili che serviranno globalmente cioè per più metodi

    private void initComponents() {

        jTextField1 = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();
        jButton4 = new javax.swing.JButton();
        jButton5 = new javax.swing.JButton();
        jButton6 = new javax.swing.JButton();
        jButton7 = new javax.swing.JButton();
        jButton8 = new javax.swing.JButton();
        jButton9 = new javax.swing.JButton();
        jButton10 = new javax.swing.JButton();
        jButton11 = new javax.swing.JButton();
        jButton12 = new javax.swing.JButton();
        jButton13 = new javax.swing.JButton();
        jButton15 = new javax.swing.JButton();
        jButton16 = new javax.swing.JButton();
        jButton17 = new javax.swing.JButton();
        jButton19 = new javax.swing.JButton();
        jButton14 = new javax.swing.JButton();
        jButton20 = new javax.swing.JButton();
        jButton21 = new javax.swing.JButton();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();

Questo elenco crea nuovi bottoni, menu e anche la barra in cui scrivere i numeri.

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Calcolatrice");
        setResizable(false);

        jTextField1.setEditable(false);

Qui definisco il titolo della finestra, di chiudere il programma appena si chiude la finestra e che l’ utente non può modificare la barra in cui scrivere i numeri (poichè i numeri si possono scrivere solo con i bottoni).

        jButton1.setText("7");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButton2.setText("4");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        jButton3.setText("1");
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });

        jButton4.setText("8");
        jButton4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton4ActionPerformed(evt);
            }
        });

        jButton5.setText("5");
        jButton5.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton5ActionPerformed(evt);
            }
        });

        jButton6.setText("2");
        jButton6.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton6ActionPerformed(evt);
            }
        });

        jButton7.setText("9");
        jButton7.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton7ActionPerformed(evt);
            }
        });

        jButton8.setText("6");
        jButton8.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton8ActionPerformed(evt);
            }
        });

        jButton9.setText("3");
        jButton9.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton9ActionPerformed(evt);
            }
        });

        jButton10.setText("+");
        jButton10.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton10ActionPerformed(evt);
            }
        });

        jButton11.setText("-");
        jButton11.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton11ActionPerformed(evt);
            }
        });

        jButton12.setText("×");
        jButton12.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton12ActionPerformed(evt);
            }
        });

        jButton13.setText("Cancella");
        jButton13.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton13ActionPerformed(evt);
            }
        });

        jButton15.setText("=");
        jButton15.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton15ActionPerformed(evt);
            }
        });

        jButton16.setText("√");
        jButton16.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton16ActionPerformed(evt);
            }
        });

        jButton17.setText("ײ");
        jButton17.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton17ActionPerformed(evt);
            }
        });

        jButton19.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Exit.png")));
        jButton19.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton19ActionPerformed(evt);
            }
        });

        jButton14.setText("÷");
        jButton14.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton14ActionPerformed(evt);
            }
        });

        jButton20.setText("+/-");
        jButton20.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton20ActionPerformed(evt);
            }
        });

        jButton21.setText("0");
        jButton21.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton21ActionPerformed(evt);
            }
        });

        jMenu1.setText("File");

        jMenuItem1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Exit.png")));
        jMenuItem1.setText("Chiudi");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem1);

        jMenuBar1.add(jMenu1);

        setJMenuBar(jMenuBar1);

Tutto questo codice serve ad attribuire ai pulsanti ed ai menù i nomi e anche le funzioni che hanno.

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jButton2)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(jButton5)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(jButton8)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(jButton11))
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jButton3)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(jButton6)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(jButton9)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(jButton12)))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(jButton16, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jButton14))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(jButton15, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jButton17, javax.swing.GroupLayout.DEFAULT_SIZE, 44, Short.MAX_VALUE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jButton19, javax.swing.GroupLayout.DEFAULT_SIZE, 49, Short.MAX_VALUE)
                            .addComponent(jButton20, javax.swing.GroupLayout.DEFAULT_SIZE, 49, Short.MAX_VALUE)))
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addComponent(jTextField1, javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                            .addComponent(jButton1)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                            .addComponent(jButton4)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                            .addComponent(jButton7)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                            .addComponent(jButton10)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(jButton21)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(jButton13, javax.swing.GroupLayout.DEFAULT_SIZE, 105, Short.MAX_VALUE))))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jButton1)
                    .addComponent(jButton4)
                    .addComponent(jButton7)
                    .addComponent(jButton10)
                    .addComponent(jButton13, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jButton21))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jButton2)
                    .addComponent(jButton5)
                    .addComponent(jButton8)
                    .addComponent(jButton11)
                    .addComponent(jButton17, javax.swing.GroupLayout.DEFAULT_SIZE, 30, Short.MAX_VALUE)
                    .addComponent(jButton14)
                    .addComponent(jButton20))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jButton19, javax.swing.GroupLayout.DEFAULT_SIZE, 30, Short.MAX_VALUE)
                    .addComponent(jButton15, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                        .addComponent(jButton3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jButton9, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jButton16, javax.swing.GroupLayout.DEFAULT_SIZE, 30, Short.MAX_VALUE)
                        .addComponent(jButton6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jButton12, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );

        pack();
    }

Come ho già detto all’ inizio dell’ articolo non mi soffermerò al codice generato con NetBeans che serve per l’ interfaccia grafica ma vi spiegherò ora le funzioni dei vari pulsanti.

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt)
    {
        System.exit(0);
    }

    private void jButton13ActionPerformed(java.awt.event.ActionEvent evt)
    {
        jTextField1.setText("");
    }

Il primo metodo serve a chiudere la finestra al click del menù File->Chiudi il secondo invece è il metodo attribuito al pulsante “Cancella” che cancella appunto tutto quello che è scritto nella barra dove vanno scritte ed eseguite le varie operazioni.

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt)
    {
    jTextField1.setText(jTextField1.getText()+"1");
    }

    private void jButton6ActionPerformed(java.awt.event.ActionEvent evt)
    {
    jTextField1.setText(jTextField1.getText()+"2");
    }

    private void jButton9ActionPerformed(java.awt.event.ActionEvent evt)
    {
    jTextField1.setText(jTextField1.getText()+"3");
    }

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)
    {
    jTextField1.setText(jTextField1.getText()+"4");
    }

    private void jButton5ActionPerformed(java.awt.event.ActionEvent evt)
    {
    jTextField1.setText(jTextField1.getText()+"5");
    }

    private void jButton8ActionPerformed(java.awt.event.ActionEvent evt)
    {
    jTextField1.setText(jTextField1.getText()+"6");
    }

    private void jButton7ActionPerformed(java.awt.event.ActionEvent evt)
    {
    jTextField1.setText(jTextField1.getText()+"9");
    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
    {
    jTextField1.setText(jTextField1.getText()+"7");
    }

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt)
    {
    jTextField1.setText(jTextField1.getText()+"8");
    }

    private void jButton21ActionPerformed(java.awt.event.ActionEvent evt)
    {
          jTextField1.setText(jTextField1.getText()+"0");
    }

Tutti questi metodi sono i metodi dei pulsanti dei numeri che scrivono nella barra della calcolatrice il numero al click del pulsante.

    private void jButton10ActionPerformed(java.awt.event.ActionEvent evt)
    {
    formula[0]=Double.parseDouble(jTextField1.getText());
    b="+";
    jTextField1.setText("");
    }

    private void jButton11ActionPerformed(java.awt.event.ActionEvent evt)
    {
    formula[0]=Double.parseDouble(jTextField1.getText());
    b="-";
    jTextField1.setText("");
    }

    private void jButton12ActionPerformed(java.awt.event.ActionEvent evt)
    {
    formula[0]=Double.parseDouble(jTextField1.getText());
    b="*";
    jTextField1.setText("");
    }

    private void jButton14ActionPerformed(java.awt.event.ActionEvent evt)
    {
    formula[0]=Double.parseDouble(jTextField1.getText());
    b="/";
    jTextField1.setText("");
    }

Tutti questi metodi sono attribuiti ai vari segni (+-*/) che svuotano la barra della calcolatrice per poter scrivere il secondo numero.

    private void jButton15ActionPerformed(java.awt.event.ActionEvent evt)
    {
    formula[1]=Double.parseDouble(jTextField1.getText());
    double x=0;
    if(b=="+")
    {x=formula[0]+formula[1];}

    if(b=="-")
    {x=formula[0]-formula[1];}

    if(b=="*")
    {x=formula[0]*formula[1];}

    if(b=="/")
    {x=formula[0]/formula[1];}

    if(b=="altro")
    {
        jTextField1.setText(jTextField1.getText());
    }
    else
    {
        jTextField1.setText(""+x);
    }
    }

Questo metodo è attribuito al pulsante “=” ed è qui che attraverso la variabile b si moltiplicano, si dividono, si fa la differenza o si addizionano i due numeri oppure con quel ciclo dove la stringa “b” equivale a “altro” si lascia cosi com’è poichè quel ciclo serve per i metodi della radice quadrata, dell’ elevazione alla seconda, oppure in caso si cambia di segno il numero perchè già nei metodi di questi calcoli si (poichè si lavora su un numero) è ottenuto il risultato al click del pulsante dell’ operatore.

    private void jButton19ActionPerformed(java.awt.event.ActionEvent evt)
    {
        System.exit(0);
    }

Questo metodo è attribuito al pulsante Chiudi della calcolatrice (e non del menù). Ma potremmo anche mettere che il pulsante Chiudi del menu (o della calcolatrice) utilizza lo stesso metodo di quello del menu (o del pulsante).

    private void jButton16ActionPerformed(java.awt.event.ActionEvent evt)
    {
        double v=Math.sqrt(Double.parseDouble(jTextField1.getText()));
        b="altro";
        jTextField1.setText(""+v);
    }

    private void jButton17ActionPerformed(java.awt.event.ActionEvent evt)
    {
        double v=Math.pow(Double.parseDouble(jTextField1.getText()), 2);
        b="altro";
        jTextField1.setText(""+v);
    }

    private void jButton20ActionPerformed(java.awt.event.ActionEvent evt)
    {
        double v=-(Double.parseDouble(jTextField1.getText()));
        b="altro";
        jTextField1.setText(""+v);
    }

Questi tre metodi servono: il primo per la radice quadrata che utilizza il codice Math.sqrt(), il secondo per l’ elevazione alla seconda che utilizza il codice Math.pow() e il terzo cambia il segno del numero.

    public static void main(String args[])
    {
        java.awt.EventQueue.invokeLater(new Runnable()
        {
            public void run() {
                new Calcolatrice().setVisible(true);
            }
        });
    }
}

Ecco il link di Download file.jar.
Visualizza Sorgente