Kalkulator dengan java

@JOptionPane Kalkulator

Mungkin bagi pemula dalam pembuatan kalkulator dengan java agak lebih rumit, apa lagi untuk membuat statementnya yang begitu panjang. huft...jangan ditanya dueh... :-p
untuk itu perlu pemikiran khusus untuk proses pemahamanya.
nah...untuk solusinya saya bikinkan kalkulator sederhana yang memanfaatkan fasilitas JOptionPane untuk membuat kalkulator, fungsinya ga kalah jauh ko ma yang aslinya...
nih..source codenya.


package PerhitunganDasar;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;

import javax.swing.*;

public class PaneKalkulator extends JFrame{
   
    JButton btn1 = new JButton("Pertambahan");
    JButton btn2 = new JButton("Pengurangan");
    JButton btn3 = new JButton("Perkalian");
    JButton btn4 = new JButton("Pembagian");
    String bil1, bil2, temp,trs;
    double hasil;
    public PaneKalkulator(){
       
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        ComponenButton(new JPanel());
        btn1.addActionListener(new Aksi());
        btn2.addActionListener(new Aksi());
        btn3.addActionListener(new Aksi());
        btn4.addActionListener(new Aksi());
        pack();
        setVisible(true);
       
       
    }
    void ComponenButton(JPanel pane){
        pane.setLayout(new FlowLayout());
        pane.add(btn1);
        pane.add(btn2);
        pane.add(btn3);
        pane.add(btn4);
        getContentPane().add(pane);
       
    }
    void Perhitungan(){
        String str =temp;
       
        bil1 = JOptionPane.showInputDialog("Masukan Angka pertama :");
        bil2 = JOptionPane.showInputDialog("Masukan Angka Kedua :");
       
        Double db1 = Double.valueOf(bil1);
        Double db2 = Double.valueOf(bil2);
       
        if (str.equals("Pertambahan")){
        hasil = db1+db2;
        }else if (str.equals("Pengurangan")){
        hasil=db1-db2;
        }else if (str.equals("Perkalian")){
        hasil=db1*db2;
        }else if (str.equals("Pembagian")){
        hasil=db1/db2;
        }
        JOptionPane.showMessageDialog(null,"Hasilnya adalah  "+ hasil);
    }
   
    class Aksi implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub
            temp = e.getActionCommand();
            Perhitungan();
           
        }
       
    }
    public static void main(String[]args){
        new PaneKalkulator();
    }

}


nah....sekarang kalo pengen bikin kalkulator yang dah berbentuk GUI, nih source code nya.....

Pertama buat class Form nya dulu dengan nama Form.java

package MembuatKalkulator;

import java.awt.GridLayout;
import javax.swing.*;

public class Form extends JFrame{

    JPanel pane = new JPanel();
    JTextField field = new JTextField(10);
    Perhitungan ph = new Perhitungan(this);
    public Form(){
      Tampilan(new JPanel(),new JPanel(),new JPanel());
      setDefaultCloseOperation(EXIT_ON_CLOSE);
      bt0.addActionListener(ph);
      bt1.addActionListener(ph);
      bt2.addActionListener(ph);
      bt3.addActionListener(ph);
      bt4.addActionListener(ph);
      bt5.addActionListener(ph);
      bt6.addActionListener(ph);
      bt7.addActionListener(ph);
      bt8.addActionListener(ph);
      bt9.addActionListener(ph);
      tambah.addActionListener(ph);
      kurang.addActionListener(ph);
      kali.addActionListener(ph);
      bagi.addActionListener(ph);
      hasil.addActionListener(ph);
      clear.addActionListener(ph);
      setSize(300,300);
      setVisible(true);
    }
    public void Tampilan(JPanel pane1, JPanel pane2,JPanel pane3){
        pane1.add(bt1);
        pane1.add(bt2);
        pane1.add(bt3);
        pane1.add(bt4);
        pane1.add(bt5);
        pane2.add(bt6);
        pane2.add(bt7);
        pane2.add(bt8);
        pane2.add(bt9);
        pane2.add(tambah);
        pane3.add(kurang);
        pane3.add(kali);
        pane3.add(bagi);
        pane3.add(hasil);
        pane3.add(clear);
       
        pane.add(pane1);
        pane.add(pane2);
        pane.add(pane3);
        pane.setLayout(new GridLayout(3,1));
        getContentPane().add(pane,"Center");
        getContentPane().add(field,"North");

    }
    public static void main(String[]args){
        new Form();
    }
      JButton bt0 = new JButton("0");
      JButton bt1 = new JButton("1");
      JButton bt2 = new JButton("2");
      JButton bt3 = new JButton("3");
      JButton bt4 = new JButton("4");
      JButton bt5 = new JButton("5");
      JButton bt6 = new JButton("6");
      JButton bt7 = new JButton("7");
      JButton bt8 = new JButton("8");
      JButton bt9 = new JButton("9");
      JButton tambah = new JButton("+");
      JButton kurang = new JButton("-");
      JButton kali = new JButton("*");
      JButton bagi = new JButton("/");
      JButton hasil = new JButton("=");
      JButton clear = new JButton("c");

}

Setelah buat Form nya sekarang buat class Aksi nya, disini saya buat kelas dengan nama
Perhitungan.java

package MembuatKalkulator;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Perhitungan implements ActionListener {

    Form fm;
    String bil;
    String str;
    double temp;
    double result;
    double hasil;

    public Perhitungan(Form fm){
        this.fm = fm;
    }

    public void actionPerformed(ActionEvent e){

        Object obj = e.getSource();
        str = e.getActionCommand();

        if (obj==fm.bt0){
            bil = fm.bt0.getText();
            fm.field.setText(bil);
        }else if(obj==fm.bt1){
            bil = fm.bt1.getText();
            fm.field.setText(bil);
        }else if(obj==fm.bt2){
            bil = fm.bt2.getText();
            fm.field.setText(bil);
        }else if(obj==fm.bt2){
            bil = fm.bt2.getText();
            fm.field.setText(bil);
        }else if(obj==fm.bt3){
            bil = fm.bt3.getText();
            fm.field.setText(bil);
        }else if(obj==fm.bt4){
            bil = fm.bt4.getText();
            fm.field.setText(bil);
        }else if(obj==fm.bt5){
            bil = fm.bt5.getText();
            fm.field.setText(bil);
        }else if(obj==fm.bt6){
            bil = fm.bt6.getText();
            fm.field.setText(bil);
        }else if(obj==fm.bt7){
            bil = fm.bt7.getText();
            fm.field.setText(bil);
        }else if(obj==fm.bt8){
            bil = fm.bt8.getText();
            fm.field.setText(bil);
        }else if(obj==fm.bt9){
            bil = fm.bt9.getText();
            fm.field.setText(bil);
        }

        if (obj == fm.tambah){
            Hitung();
            fm.tambah.setEnabled(false);
        }else if(obj == fm.kurang){
            Hitung();
            fm.kurang.setEnabled(false);
        }else if(obj == fm.kali){
            Hitung();
            fm.kali.setEnabled(false);
        }else if(obj == fm.bagi){
            Hitung();
            fm.bagi.setEnabled(false);
        }else if(obj == fm.hasil){
            Hitung();
            fm.tambah.setEnabled(true);
            fm.kurang.setEnabled(true);
            fm.kali.setEnabled(true);
            fm.bagi.setEnabled(true);
        }else if (obj == fm.clear){
            fm.field.setText(null);
        }
    }

    int cos;
    void Hitung(){
        double bil1 = Double.valueOf(bil);

        if (str.equals("+")){
            result=bil1;
            temp=result;
            cos =1;
        }else if(str.equals("-")){
            result=bil1;
            temp=result;
            cos =2;
        }else if(str.equals("*")){
            result=bil1;
            temp=result;
            cos =3;
        }else if(str.equals("/")){
            result=bil1;
            temp=result;
            cos =4;
        }else if(str.equals("=")){

            switch(cos){
                case 1:
                    result = temp+bil1;
                    break;
                case 2:
                    result = temp-bil1;
                    break;
                case 3:
                    result = temp*bil1;
                    break;
                case 4:
                    result = temp/bil1;
                    break;
                default :
                    System.exit(0);
            }
            fm.field.setText(String.valueOf(result));
            result =0;
        }
    }
  
}

nah....setelah semuanya dibuat sekarang tinggal jalankan formnya, jadi deh...
selamat mencoba ya..... mantabkan source code nya...he...he......