membuat desktop kalkulator dengan netbeans


Daftar Materi Java SE Daftar Materi Java EE

jabat erat🙂, saya alka dan kita akan belajar java disini

  • buat sebuah project baru dengan nama simpleCalculator, jika belum tau lihat post berikut
  • buat kelas turunan dari JFrame dengan nama MainFrame, jika belum tau lihat post berikut
  • desainlah sehingga menjadi seperti ini, jika ingin belajar membuat desainya lihat post berikut
  • berikut ini adalah daftar komponennya untuk membuat desainnya
  • lengkapilah code kelasnya sehingga menjadi seperti ini
	public class MainFrame extends javax.swing.JFrame implements ActionListener {

    private StringBuffer angkaString, angka2String;
    private char operatorString;
    private int inputKe;
    private double hasil;
    private String hasilString;
    private boolean divZero = false;

    public MainFrame() {
        initComponents();
        angkaString = new StringBuffer();
        angka2String = new StringBuffer();
        inputKe = 1;
        enableOperator(divZero);
        samadengan.setEnabled(divZero);
    }
	
  • selanjutnya, ubahlah nama variable tiap komponen sesuai dengan gambar inspector di atas. lalu berikan event pada masing – masing tombol. untuk mebaljar memberikan event pada komponen lihat post berikut
  • untuk angka 0 berikut ini codenya
	private void b0ActionPerformed(java.awt.event.ActionEvent evt) {
        if (inputKe == 1) {
            angkaString.append(0);
            layar.setText(angkaString.toString());
            enableOperator(true);
        } else {
            angka2String.append(0);
            layar.setText(angkaString.toString() + " " + operatorString + " " + angka2String.toString());
            samadengan.setEnabled(true);
        }
    }
	
  • untuk angka 1 berikut ini codenya
 private void b1ActionPerformed(java.awt.event.ActionEvent evt) {
        if (inputKe == 1) {
            angkaString.append(1);
            layar.setText(angkaString.toString());
            enableOperator(true);
        } else {
            angka2String.append(1);
            layar.setText(angkaString.toString() + " " + operatorString + " " + angka2String.toString());
            samadengan.setEnabled(true);
        }
    }
	
  • untuk angka 2 berikut ini codenya
	private void b2ActionPerformed(java.awt.event.ActionEvent evt) {
        if (inputKe == 1) {
            angkaString.append(2);
            layar.setText(angkaString.toString());
            enableOperator(true);
        } else {
            angka2String.append(2);
            layar.setText(angkaString.toString() + " " + operatorString + " " + angka2String.toString());
            samadengan.setEnabled(true);
        }
    }
	
  • untuk angka 3 berikut ini codenya
	private void b3ActionPerformed(java.awt.event.ActionEvent evt) {
        if (inputKe == 1) {
            angkaString.append(3);
            layar.setText(angkaString.toString());
            enableOperator(true);
        } else {
            angka2String.append(3);
            layar.setText(angkaString.toString() + " " + operatorString + " " + angka2String.toString());
            samadengan.setEnabled(true);
        }
    }
	
  • untuk angka 4 berikut ini codenya
	private void b4ActionPerformed(java.awt.event.ActionEvent evt) {
        if (inputKe == 1) {
            angkaString.append(4);
            layar.setText(angkaString.toString());
            enableOperator(true);
        } else {
            angka2String.append(4);
            layar.setText(angkaString.toString() + " " + operatorString + " " + angka2String.toString());
            samadengan.setEnabled(true);
        }
    }
	
  • untuk angka 5 berikut ini codenya
	 private void b5ActionPerformed(java.awt.event.ActionEvent evt) {
        if (inputKe == 1) {
            angkaString.append(5);
            layar.setText(angkaString.toString());
            enableOperator(true);
        } else {
            angka2String.append(5);
            layar.setText(angkaString.toString() + " " + operatorString + " " + angka2String.toString());
            samadengan.setEnabled(true);
        }
    }
	
  • untuk angka 6 berikut ini codenya
	private void b6ActionPerformed(java.awt.event.ActionEvent evt) {
        if (inputKe == 1) {
            angkaString.append(6);
            layar.setText(angkaString.toString());
            enableOperator(true);
        } else {
            angka2String.append(6);
            layar.setText(angkaString.toString() + " " + operatorString + " " + angka2String.toString());
            samadengan.setEnabled(true);
        }
    }
	
  • untuk angka 7 berikut ini codenya
	 private void b7ActionPerformed(java.awt.event.ActionEvent evt) {
        if (inputKe == 1) {
            angkaString.append(7);
            layar.setText(angkaString.toString());
            enableOperator(true);
        } else {
            angka2String.append(7);
            layar.setText(angkaString.toString() + " " + operatorString + " " + angka2String.toString());
            samadengan.setEnabled(true);
        }
    }
	
  • untuk angka 8berikut ini codenya
	 private void b8ActionPerformed(java.awt.event.ActionEvent evt) {
        if (inputKe == 1) {
            angkaString.append(8);
            layar.setText(angkaString.toString());
            enableOperator(true);
        } else {
            angka2String.append(8);
            layar.setText(angkaString.toString() + " " + operatorString + " " + angka2String.toString());
            samadengan.setEnabled(true);
        }
    }
	
  • untuk angka 9 berikut ini codenya
	private void b9ActionPerformed(java.awt.event.ActionEvent evt) {
        if (inputKe == 1) {
            angkaString.append(9);
            layar.setText(angkaString.toString());
            enableOperator(true);
        } else {
            angka2String.append(9);
            layar.setText(angkaString.toString() + " " + operatorString + " " + angka2String.toString());
            samadengan.setEnabled(true);

        }
    }
	
  • untuk tombol koma, berikut ini kodenya
	private void bkomaActionPerformed(java.awt.event.ActionEvent evt) {
         if (inputKe == 1) {
            angkaString.append(".");
            layar.setText(angkaString.toString());
            enableOperator(true);
        } else {
            angka2String.append(".");
            layar.setText(angkaString.toString() + " " + operatorString + " " + angka2String.toString());
            samadengan.setEnabled(true);
        }
    }
	

jika semua angka suda ada actionnya, sekarang kita tambahkan event untuk semua operatornya

  • operator penjumlahan, berikut ini sourcecodenya
	private void tambahActionPerformed(java.awt.event.ActionEvent evt) {
        inputKe++;
        layar.setText(angkaString + " +");
        operatorString = '+';
        enableOperator(false);
        samadengan.setEnabled(false);
    }
	
  • operator pengurangan, berikut ini sourcecodenya
	 private void kurangActionPerformed(java.awt.event.ActionEvent evt) {
        inputKe++;
        layar.setText(angkaString + "-");
        operatorString = '-';
        enableOperator(false);
        samadengan.setEnabled(false);
    }
	
  • operator perkalian, berikut ini sourcecodenya
	 private void kaliActionPerformed(java.awt.event.ActionEvent evt) {
        inputKe++;
        layar.setText(angkaString + "*");
        operatorString = '*';
        enableOperator(false);
        samadengan.setEnabled(false);

    }
	
  • operator pembagian, berikut ini sourcecodenya
	 private void bagiActionPerformed(java.awt.event.ActionEvent evt) {
        inputKe++;
        layar.setText(angkaString + "/");
        operatorString = '/';
        enableOperator(false);
        samadengan.setEnabled(false);

    }
	
  • operator delete, berikut ini sourcecodenya
	 private void deleteActionPerformed(java.awt.event.ActionEvent evt) {

        if (inputKe == 1 && angkaString.length() > 0) {
            angkaString.deleteCharAt(angkaString.length() - 1);
            layar.setText(angkaString.toString());
            if(angkaString.length()<1){
                enableOperator(false);
            }
        }
        if (inputKe == 2 && angka2String.length() > 0) {
            angka2String.deleteCharAt(angka2String.length() - 1);
            layar.setText(angkaString.toString() + " " + operatorString + " " + angka2String.toString());
             if(angka2String.length()<1){
                samadengan.setEnabled(false);
            }
        }

    }
	
  • operator MOD (sisa bagi), berikut ini sourcecodenya
	 private void modActionPerformed(java.awt.event.ActionEvent evt) {
        inputKe++;
        layar.setText(angkaString + "%");
        operatorString = '%';
        enableOperator(false);
        samadengan.setEnabled(false);

    }
	
  • operator sama dengan, berikut ini sourcecodenya
	 private void samadenganActionPerformed(java.awt.event.ActionEvent evt) {
        if (angkaString.length() < 1) {
            angkaString.append(0);
        }
        if (angka2String.length() < 1) {
            angka2String.append(0);
        }

        double angka1 = Double.parseDouble(angkaString.toString());
        double angka2 = Double.parseDouble(angka2String.toString());

        double hasilLocal = 0;
        String hasilLocalSt = "";
        switch (operatorString) {
            case '+':
                hasilLocal = angka1 + angka2;
                break;
            case '-':
                hasilLocal = angka1 - angka2;
                break;
            case '*':
                hasilLocal = angka1 * angka2;
                break;
            case '%':
                if (angka2 == 0) {
                    divZero = true;
                }
                if (divZero == false) {
                    hasilLocal = angka1 % angka2;
                } else {
                    hasilLocal = 0;
                }
                break;
            case '/':
                if (angka2 == 0) {
                    divZero = true;
                }
                if (divZero == false) {
                    hasilLocal = angka1 / angka2;
                } else {
                    hasilLocal = 0;
                }
                break;
        }

        BigDecimal hasilBig = new BigDecimal(hasilLocal);
        hasilBig = hasilBig.setScale(4, RoundingMode.UP);

        hasilLocalSt = String.valueOf(hasilBig.toPlainString());
        if (divZero == false) {
            if (hasilLocalSt.endsWith(".0000")) {
                hasilLocalSt = hasilLocalSt.substring(0, hasilLocalSt.length() - 5);
            }
        } else {
            hasilLocalSt = "divided by 0";
        }

        delete.setEnabled(false);

        enableAngka(false);
        layar.setText(hasilLocalSt);

    }
	

oh iya untuk tombol clear nya belum. ini codenya

	private void clearActionPerformed(java.awt.event.ActionEvent evt) {
        inputKe = 1;
        angkaString.setLength(0);
        angka2String.setLength(0);
        layar.setText("");
        enableOperator(false);
        delete.setEnabled(true);
        samadengan.setEnabled(false);
        enableAngka(true);
        divZero = false;

    }
	

setelah itu kita perlu method tambahan , berikut ini codenya

	   private void enableAngka(boolean val) {
        b1.setEnabled(val);
        b2.setEnabled(val);
        b3.setEnabled(val);
        b4.setEnabled(val);
        b5.setEnabled(val);
        b6.setEnabled(val);
        b7.setEnabled(val);
        b8.setEnabled(val);
        b9.setEnabled(val);
        b0.setEnabled(val);
    }
	

dan ini

	private void enableOperator(boolean val) {
        kurang.setEnabled(val);
        kali.setEnabled(val);
        bagi.setEnabled(val);
        tambah.setEnabled(val);
        mod.setEnabled(val);
    }
	

sepertinya sudah selesai.. hehe silahkan dijalankan🙂
semoga ada manfaatnya, jika ada pertanyaan atau saran silahkan comment🙂


Warm Regards
Lahardi Alkawero
mari berbagi meskipun sedikit


Daftar Materi Java SE Daftar Materi Java EE

8 comments on “membuat desktop kalkulator dengan netbeans

    • 1. tambahin aja button nya 2. buat method untuk perhitungan modulus dan persen 3. kasih event pada button yg dibuat untuk pemanggilan method yg bersangkutan.

silahkan ditanggapi :)

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s