Langsung aja ya!!!!
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Kalkulator
extends JFrame
implements ActionListener {
// Deklarasi Variabel GUI
JTextField tampil_angka = new JTextField("0");
JPanel panalAngka = new JPanel();
JButton tombol_1 = new JButton("1");
JButton tombol_2 = new JButton("2");
JButton tombol_3 = new JButton("3");
JButton tombol_4 = new JButton("4");
JButton tombol_5 = new JButton("5");
JButton tombol_6 = new JButton("6");
JButton tombol_7 = new JButton("7");
JButton tombol_8 = new JButton("8");
JButton tombol_9 = new JButton("9");
JButton tombol_0 = new JButton("0");
JButton tombol_plusMinus = new JButton("+/-");
JButton tombol_Titik = new JButton(".");
JButton tombol_c = new JButton("C");
JButton tombol_kali = new JButton("*");
JButton tombol_kurang = new JButton("-");
JButton tombol_tambah = new JButton("+");
JButton tombol_bagi = new JButton("/");
JButton tombol_persen = new JButton("%");
JButton tombol_samaDengan = new JButton("=");
JButton tombol_ce = new JButton("CE");
// Deklarasi variabel input bukan angka
String bukan_angka = "";
// Deklarasi variabel tampung tampilan angka pertama
double bil_1 = 0;
// Deklarasi variabel angka baru jika mendapat input bukan angka
boolean angka_baru = false;
public static void main(String[] args) {
Kalkulator frame = new Kalkulator();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(310, 255);
frame.setVisible(true);
frame.setResizable(false);
} // Akhir methode main
public Kalkulator() {
// Layout dan titel
this.getContentPane().setLayout(null);
this.setTitle("Kalkulator");
// Menanmbahkan Panel
// Mengatur Panel
panalAngka.setBackground(Color.blue);
panalAngka.setBounds(new Rectangle(0, 0, 343, 225));
panalAngka.setLayout(null);
// Menambahkan Tombol-Tombol pada Panel
panalAngka.add(tombol_0, null);
panalAngka.add(tombol_1, null);
panalAngka.add(tombol_2, null);
panalAngka.add(tombol_3, null);
panalAngka.add(tombol_4, null);
panalAngka.add(tombol_5, null);
panalAngka.add(tombol_6, null);
panalAngka.add(tombol_7, null);
panalAngka.add(tombol_8, null);
panalAngka.add(tombol_9, null);
panalAngka.add(tombol_c, null);
panalAngka.add(tombol_kali, null);
panalAngka.add(tombol_kurang, null);
panalAngka.add(tombol_samaDengan, null);
panalAngka.add(tombol_tambah, null);
panalAngka.add(tombol_bagi, null);
panalAngka.add(tombol_persen, null);
panalAngka.add(tombol_ce, null);
panalAngka.add(tombol_plusMinus, null);
panalAngka.add(tombol_Titik, null);
// Menambah dan mengatur JTextField untuk menampilkan angka-angka
panalAngka.add(tampil_angka, null);
this.getContentPane().add(panalAngka, null);
tampil_angka.setBackground(Color.white);
tampil_angka.setBorder(null);
tampil_angka.setEditable(false);
tampil_angka.setText("0");
tampil_angka.setHorizontalAlignment(SwingConstants.RIGHT);
tampil_angka.setBounds(new Rectangle(7, 10, 290, 27));
/** Mengatur ukuran dan posisi Tombol-Tombol
*
* line d = 7 8 9 C CE
* line c = 4 5 6 * %
* line b = 1 2 3 - /
* line a = 0 +/- . + =
*
*/
// Untuk Line a (0, +/-, ., +, =)
tombol_0.setBounds(new Rectangle(6, 183, 50, 33));
tombol_plusMinus.setBounds(new Rectangle(66, 183, 50, 33));
tombol_Titik.setBounds(new Rectangle(126, 183, 50, 33));
tombol_tambah.setBounds(new Rectangle(186, 183, 50, 33));
tombol_samaDengan.setBounds(new Rectangle(246, 183, 50, 33));
// Untuk Line b (1, 2, 3, -, /)
tombol_1.setBounds(new Rectangle(7, 140, 50, 33));
tombol_2.setBounds(new Rectangle(66, 140, 50, 33));
tombol_3.setBounds(new Rectangle(126, 140, 50, 33));
tombol_kurang.setBounds(new Rectangle(186, 140, 50, 33));
tombol_bagi.setBounds(new Rectangle(246, 140, 50, 33));
// Untuk Line c (4, 5, 6, *, %)
tombol_4.setBounds(new Rectangle(7, 97, 50, 33));
tombol_5.setBounds(new Rectangle(66, 97, 50, 33));
tombol_6.setBounds(new Rectangle(126, 97, 50, 33));
tombol_kali.setBounds(new Rectangle(186, 97, 50, 33));
tombol_persen.setBounds(new Rectangle(246, 97, 50, 33));
// Untuk Line d (7, 8, 9, C, CE)
tombol_7.setBounds(new Rectangle(6, 54, 50, 33));
tombol_8.setBounds(new Rectangle(66, 54, 50, 33));
tombol_9.setBounds(new Rectangle(126, 54, 50, 33));
tombol_c.setBounds(new Rectangle(186, 54, 50, 33));
tombol_ce.setBounds(new Rectangle(246, 54, 50, 33));
// Menambahkan ActionListener pada Tombol-Tombol
tombol_0.addActionListener(this);
tombol_1.addActionListener(this);
tombol_2.addActionListener(this);
tombol_3.addActionListener(this);
tombol_4.addActionListener(this);
tombol_5.addActionListener(this);
tombol_6.addActionListener(this);
tombol_7.addActionListener(this);
tombol_8.addActionListener(this);
tombol_9.addActionListener(this);
tombol_plusMinus.addActionListener(this);
tombol_Titik.addActionListener(this);
tombol_c.addActionListener(this);
tombol_ce.addActionListener(this);
tombol_kali.addActionListener(this);
tombol_kurang.addActionListener(this);
tombol_persen.addActionListener(this);
tombol_bagi.addActionListener(this);
tombol_samaDengan.addActionListener(this);
tombol_tambah.addActionListener(this);
} // Akhir methode Kalkulator
/**
* Methode actionPerformed(ActionEvent e)
* Methode untuk memproses event yang diterima dari Tombol
* @param e :
*/
public void actionPerformed(ActionEvent e) {
// Mengambil nama Command dari setiap tombol
String a = e.getActionCommand();
// Jika tombol operator yang ditekan
if ( (a == "=") || (a == "-") || (a == "+") || (a == "*") || (a == "/")) {
// Panggil methode operasi dengan input a
operasi(a);
}
// Tetapi jika tombol titik yang ditekan
else if (a == ".") {
// Panggil Methode koma dengan input a
koma(a);
}
// Tetapi jika tombol persen atau “+/-“ yang ditekan
else if (a == "%" || a == "+/-") {
// Panggil methode persen_negatif dengan input a
persen_negatif(a);
}
// Tetapi jika tombol C atau CE yang ditekan
else if (a == "C" || a == "CE") {
// Panggil methode hapus dengan input a
hapus(a);
}
// Tetapi jika tombol angka yang ditekan
else {
// Panggil methode angka dengan input a
angka(a);
}
} // Akhir methode kalkulator
/**
* Methode : angka
* Keterangan : proses jika input yang didapat adalah Angka
* @param a :
*/
public void angka(String a) {
// Jika angka ditekan setelah tombol operator
if (angka_baru) {
tampil_angka.setText(a);
angka_baru = false;
}
else {
// Jika tombol angka pertama kali ditekan
if (tampil_angka.getText().equals("0")) {
// Hilangkan "0" dan diisi dengan angka yang ditekan
tampil_angka.setText(a);
}
// Tetapi jika bukan yang pertama kali ditekan
else {
// Tambahkan String angka tersebut
a = tampil_angka.getText() + a;
// Isi dengan string yang telah didapat
tampil_angka.setText(a);
}
}
} // Akhir methode angka
/**
* Methode : operasi
* Keterangan : proses jika input yang didapat adalah
* "+" "-" "*" "/" atau "="
* @param a :
*/
public void operasi(String a) {
// Mengambil nilai yang ada pada teks field
String ambil_angka = tampil_angka.getText();
// Jika tombol yang ditekan bukan tombol operator
if (angka_baru && bukan_angka != "=") {
}
// Tetapi jika tombol yang ditekan adalah tombol operator
else {
// Angka yang ditekan akan menjadi angka baru berikutnya
angka_baru = true;
// Jika Penjumlahan
if (bukan_angka == "+") {
bil_1 += Double.parseDouble(ambil_angka);
bukan_angka = a;
}
// Tetapi jika perkalian
else if (bukan_angka == "*") {
bil_1 *= Double.parseDouble(ambil_angka);
bukan_angka = a;
}
// Tetapi jika Pembagian
else if (bukan_angka == "/") {
bil_1 /= Double.parseDouble(ambil_angka);
bukan_angka = a;
}
// Tetapi jika pengurangan
else if (bukan_angka == "-") {
bil_1 -= Double.parseDouble(ambil_angka);
bukan_angka = a;
}
// Tetapi jika tombol "="
else {
bil_1 = Double.parseDouble(ambil_angka);
bukan_angka = a;
}
}
// Merubah hasil dari Double menjadi String
String koma_nol = Double.toString(bil_1);
// Apabila hasil yang didapatkan bilangan bulat
if (koma_nol.endsWith(".0")) {
// Hilangkan dua digit paling akhir (.0)
koma_nol = koma_nol.substring(0, koma_nol.trim().length() - 2);
}
// Tampilkan hasil akhir
tampil_angka.setText(koma_nol);
} // Akhir methode operasi
/**
* Methode : koma
* Keterangan : proses jika input yang didapat adalah
* "."
* @param a :
*/
public void koma(String a) {
String titik = tampil_angka.getText();
if (angka_baru) {
tampil_angka.setText("0.");
angka_baru = false;
}
else {
if (titik.indexOf(".") == -1) {
titik = titik + ".";
}
}
tampil_angka.setText(titik);
} // Akhir methode koma
/**
* Methode : persen_negatif
* Keterangan : proses jika input yang didapat adalah
* "%" atau "+/-"
* @param a :
*/
public void persen_negatif(String a) {
// Jika tombol "%" yang ditekan
if (a == "%") {
bil_1 = (Double.parseDouble(tampil_angka.getText())) / 100;
}
// Jika tombol "+/-" yang ditekan
else {
bil_1 = (Double.parseDouble(tampil_angka.getText())) * -1;
}
// Merubah hasil dari Double menjadi String
String koma_nol = Double.toString(bil_1);
// Apabila hasil yang didapatkan bilangan bulat
if (koma_nol.endsWith(".0")) {
// Hilangkan dua digit paling akhir (.0)
koma_nol = koma_nol.substring(0, koma_nol.trim().length() - 2);
}
// Tampilkan hasil akhir
tampil_angka.setText(koma_nol);
} // Akhir methode persen_negatif
/**
* Methode : hapus
* Keterangan : proses jika input yang didapat adalah
* "C" atau "CE"
* @param a :
*/
public void hapus(String a) {
if (a == "C") {
tampil_angka.setText("0");
bukan_angka = "";
bil_1 = 0;
angka_baru = true;
}
else {
tampil_angka.setText("0");
angka_baru = true;
}
} // Akhir methode hapus
} // Akhir Class Kalkulator