Minggu, Desember 13, 2015

kalkulator sederhana

Pada Posting blog saya saat ini akan membahas tentang “Pembuatan Kalkulator Sederhana“.Dalam tutorial ini Anda akan belajar tentang menggunakan ActionListener dan pembangunan GUI.
Pertama kita buat class calculator terlebih dahulu, kemudian kita memulai untuk menambahkan beberapa sintak untuk membantu kita dalam membuat tampilan GUI, diantaranya kita harus mengimport :
import java.awt.*; ( berfungsi untuk visual )
import javax.swing.*; (berfungsi untuk mengatur visual )
import java.awt.event.*; ( berfungsi untuk menangani berjalannya perintah ActionListener. )

class calculator yang sudah dibuat dan diimportkan beberapa perintah , sekarang kita perlu mempergunakan JFrame dan ActionListener.
Public class calculator extends JFrame implements ActionListener {

Dalam pembuatan calculator ini, pertama diperlukannya tombol yang tersedia ( panel ) , pertama deklarasikan terlebih dahulu JPanel yang diperlukan kemudian JButton yang dibutuhkan pula, dalam pemberian nama pada setiap tombol maka diperlukan perintah String[] buttonString ={ …. }; seperti source code dibawah ini

JPanel[] row = new JPanel[5];
          JButton[] button = new JButton[19];
          String[] buttonString = {"7", "8", "9", "+",
     
                                   "4", "5", "6", "-",
     
                                   "1", "2", "3", "*",
     
                                   ".", "/", "C", "√",
     
                                   "+/-", "=", "0"};
     

 Kemudian buatlah ukuran layout untuk GUI dari kalkulator

int[] W = {300,45,140,100};           // dipergunakan untuk ukuran layout berdasarkan x,y,w,h
int[] H = {45, 40};                   // untuk ukuran w dan h tombol

     


menginisiasikan dan menyatakan dari tombol yang akan ditampilkan
Dimension displayDimension = new Dimension(W[0], H[0]);
     
      Dimension regularDimension = new Dimension(W[1], H[1]);
     
      Dimension rColumnDimension = new Dimension(W[2], H[1]);
     
      Dimension zeroButDimension = new Dimension(W[3], H[1]);
     
Kemusdian kita inisiasikan kondisi untuk perhitungan seperti menambahkan, mengurangi, mengalikan, dan membagi . sehingga membutuhkan kondisi 4 pehitungan.
Lalu kita deklarasikan kondisi awal untuk perhitungan

          boolean[] function = new boolean[4];


Lalu kita deklarasikan kondisi awal untuk perhitungan
          double[] awal = {0, 0};
kemudian kita membuat tampilan untuk memasukkan karakter menggunakan JTextArea dan kita dapat pula menambahkan inputan berupa jenis font yang akan kita pergunakan
JTextArea display = new JTextArea(1,40);
     

      Font font = new Font("calibri", Font.BOLD, 14);
Kemudian kita memulai memberikan konstruktor  super (“judul”) untuk memberikan nama pada program yang akan dibuat.
  calculator() {
       super("Calculator");
       setDesign();          
       setSize(380, 250);                 //mengatur layout (w,h)
       setResizable(false);   //agar frame tidak berubah ukurannya
     
      setDefaultCloseOperation(EXIT_ON_CLOSE);// untuk keluar frame ketika ditutup
GridLayout grid = new GridLayout(5,6);
      setLayout(grid);


GridLayout dipergunakan untuk mengatur jumlah komponen pada setiap baris pada suatu tampilan GUI .  GridLayout terdiri atas (….,…) inputan pertama dipergunakan untuk baris dan yang kedua untuk banyaknya komponen pada setiap barisnya.

for(int i = 0; i <4; i++)
     
             function[i] = false;
              FlowLayout f1 = new FlowLayout(FlowLayout.CENTER);
              FlowLayout f2 = new FlowLayout(FlowLayout.CENTER,1,1);
              for(int i = 0; i < 5; i++)
     
                  row[i] = new JPanel();
     
              row[0].setLayout(f1);
              for(int i = 1; i < 5; i++)
                  row[i].setLayout(f2);
              for(int i = 0; i < 19; i++) {
                  button[i] = new JButton();
                  button[i].setText(buttonString[i]);
                  button[i].setFont(font);
                  button[i].addActionListener(this);
              }

              display.setFont(font);
buat looping untuk melooping setiap bari yang kita pergunakan saya mempergunakan 4 baris.  Penggunaan FlowLayout untuk menempatkan tempat untuk menulis inputan yang akan dimana posisinya perintah seperti “CENTER” untuk menempatkannya pada posisi tengah.
Kemudian atur FlowLayout dimulai dengan baris pertama yaitu row[0] yang dibuat sebuah variable
FlowLayout f1 = FlowLayout baru (FlowLayout.CENTER);
Untuk sisa dari baris lainnya kita harus membuat variable FlowLayout  baru kembali .
FlowLayout f2 = FlowLayout baru (FlowLayout.CENTER, 1,1); - 1 ini adalah bilangan bulat untuk gap horisontal dan vertikal gap.
Sekarang mari kita menginisialisasi JPanel baris untuk dipergunakan sebagai tempat untuk penempatan tombol pada GUI . setLayout dipergunakan untuk membantu kita untuk mengatur layout untuk setiap barisnya.  row [0] .setLayout (f1); - Yang akan membuat baris pertama dari FlowLayout pertama.
Kemudian buat kembali untuk baris kedua yaitu f2 supaya dapat dipergunakan dalam proses looping.
Karena ada beberapa hal yang sama yang harus kita lakukan untuk setiap tombol, mari kita membuat loop lain. Untuk menatur teks dalam tombol kita memerlukan perintah buttonString,sehingga tombol [0] akan memiliki teks dari buttonString [0], tombol [1] akan memiliki teks dari buttonString [1] dan sebagainya. Dalam setiap font dalam tombol kita harus menambahkan .addActionListener ( ); agar tpmbol dapat bekerja.
Untuk tombol biasa dan tombol kolom kanan kita akan menggunakan loop.
dan untuk nol, kita hanya perlu menggunakan - tombol [18] .setPreferredSize (zeroButDimension);
Di sinilah kita menambahkan komponen ke panel, dan panel untuk frame. Untuk menambahkan komponen ke penggunaan panel panel.add (komponen) yang dibutuhkan,
row [0] .add (display); ini menambah tampilan untuk baris 1.

dan menambahkan panel, tambahkan (row [0]); yang menambahkan row1. Baris lain akan berbeda karena kita akan menggunakan loop, Ikuti sepanjang untuk row2. Kemudian loop melalui 4 tombol pertama dan menambahkan mereka, maka kita tambahkan di tombol 15. Berikut adalah baris yang tersisa
Sekarang semua yang perlu kita lakukan dengan konstruktor dan menambahkan pada setVisible (true); untuk itu dan kami sudah selesai Oke, jadi sekarang Anda recieving 2 kesalahan dan Anda tidak dapat mengkompilasi belum, jadi mari kita memperbaiki kesalahan-kesalahan sehingga Anda dapat melihat bagaimana kalkulator Anda terlihat. Di luar konstruktor kita dapat membuat metode yang disebut setDesign ().
Ini adalah metode setDesign, untuk info lebih lanjut tentang tampilan dan merasa melihat ke Jawa LookAndFeel. - Karena menggunakan NimbusLookAndFeel kita membutuhkan Java 7.
Mari kita memperbaiki kesalahan terakhir ini sehingga kita dapat melihat tampilannya!
di bawah metode setDesign Anda Anda dapat membuat yang baru yang disebut actionPerformed, ini diperlukan bila menggunakan ActionListener tersebut.
Anda dapat biarkan kosong sekarang, kami akan menambahkan ke dalamnya nanti.

Sekarang jika Anda menjalankan program Anda harus dapat melihat apa kalkulator kami akan terlihat seperti. Tombol-tombol tidak bekerja lagi, kita akan mendapatkan bahwa lalu.
Kami memiliki beberapa metode untuk membuat sekarang. Salah satu metode untuk tombol yang jelas kami, salah satu metode untuk tombol plus minus kami, salah satu metode untuk akar kuadrat, dan salah satu metode untuk mendapatkan hasil kami dari fungsi. Saya akan posting metode penuh dan menjelaskan mereka dalam komentar.

Mari kita mulai dengan jelas ().
Sekarang metode akar kuadrat kami.
Sekarang metode negatif positif kita.
dan sekarang metode hasil kami yang sedikit lebih kompleks.
Sekarang bahwa kita memiliki semua metode yang kita butuhkan, semua harus kita lakukan adalah membuat tombol pekerjaan kita. Ini adalah metode yang bekerja untuk actionPerformed, cobalah untuk tidak copy dan paste, cobalah untuk mengetik itu sendiri. itu semua dijelaskan dalam ayat di bawah ini.
Untuk menemukan sumber tombol yang ditekan kita gunakan ActionEvent.getSource () == tombol karena kita disebut ActionEvent ae kita hanya dapat menggunakan ae.getSource () sebagai gantinya. Jadi tombol kita [0] adalah 7. dengan JTextArea kita menggunakan append (string) untuk menambahkan teks dalam sehingga jika sumber tombol kita adalah tombol [0] (yang kami 7 tombol) display.append ("7").; Ini akan dilakukan dengan semua tombol yang menghasilkan teks pada layar.

Sekarang pindah ke tombol fungsi kita (multiply, membagi, menambahkan, kurangi). untuk sumber tombol yang ditekan kita perlu mengatur nomor sementara kami pertama dari string pada layar. yaitu sementara [0] = Double.parseDouble (display.getText ()); sekarang untuk fungsi yang kita lakukan kita perlu mengatur fungsi yang ke benar. sejak tombol [3] adalah kami fungsi add kita mengatur fungsi [0] sama dengan benar, seperti fungsi [0] adalah menambahkan kami. sekarang kita harus mengatur ulang teks di layar untuk mendapatkan nilai kami untuk kami sementara kedua sebelum equals terkena, dengan display.setText sederhana (""); Jadi sekarang melakukan hal ini dengan tombol lain yang memiliki fungsi, mengingat bahwa (fungsi [0] adalah menambahkan, fungsi [1] adalah mengurangi, fungsi [2] adalah mengalikan, dan fungsi [3] membagi).

Sekarang hanya cukup kita hanya perlu menggunakan metode-metode yang kami ciptakan untuk tombol-tombol.
Tombol yang jelas akan memiliki yang jelas (); disebut, tombol plus minus akan memiliki getPosNeg (); disebut, tombol akar kuadrat akan memiliki getSqrt (); disebut, dan tombol sederajat akan memiliki getResult (); bernama.

source code lengkap :
package kalkulator;

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

public class calculator extends JFrame implements ActionListener {
  
JPanel[] row = new JPanel[5];
   JButton[] button = new JButton[19];
   String[] buttonString = {"7", "8", "9", "+",
                            "4", "5", "6", "-",
                            "1", "2", "3", "*",
                            ".", "/", "C", "√",
                            "+/-", "=", "0"};
   int[] W = {300,45,140,100};
   int[] H = {45, 40};
   Dimension displayDimension = new Dimension(W[0], H[0]);
   Dimension regularDimension = new Dimension(W[1], H[1]);
   Dimension rColumnDimension = new Dimension(W[2], H[1]);
   Dimension zeroButDimension = new Dimension(W[3], H[1]);
   boolean[] function = new boolean[4];
   double[] awal = {0, 0};
   JTextArea display = new JTextArea(1,40);
   Font font = new Font("calibri", Font.BOLD, 14);
  
   calculator() {
   super("Calculator");
       setDesign();
       setSize(380, 250);
       setResizable(false);
       setDefaultCloseOperation(EXIT_ON_CLOSE);
       GridLayout grid = new GridLayout(5,6);
       setLayout(grid);
       for(int i = 0; i <4; i++)
           function[i] = false;
       FlowLayout f1 = new FlowLayout(FlowLayout.CENTER);
       FlowLayout f2 = new FlowLayout(FlowLayout.CENTER,1,1);
       for(int i = 0; i < 5; i++)
           row[i] = new JPanel();
       row[0].setLayout(f1);
       for(int i = 1; i < 5; i++)
           row[i].setLayout(f2);
       for(int i = 0; i < 19; i++) {
           button[i] = new JButton();
           button[i].setText(buttonString[i]);
           button[i].setFont(font);
           button[i].addActionListener(this);
       }
       display.setFont(font);

       display.setEditable(false);
       display.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
       display.setPreferredSize(displayDimension);
       for(int i = 0; i < 14; i++)
           button[i].setPreferredSize(regularDimension);
       for(int i = 14; i < 18; i++)
           button[i].setPreferredSize(rColumnDimension);
       button[18].setPreferredSize(zeroButDimension);
       row[0].add(display);
       add(row[0]);
       for(int i = 0; i < 4; i++)
           row[1].add(button[i]);
       row[1].add(button[14]);
       add(row[1]);
       for(int i = 4; i < 8; i++)

           row[2].add(button[i]);

       row[2].add(button[15]);
       add(row[2]);
   for(int i = 8; i < 12; i++)
           row[3].add(button[i]);
       row[3].add(button[16]);
       add(row[3]);
       row[4].add(button[18]);

       for(int i = 12; i < 14; i++)

           row[4].add(button[i]);

       row[4].add(button[17]);

       add(row[4]);

        

       setVisible(true);

   }
   public void clear() {
       try {
           display.setText("");
           for(int i = 0; i < 4; i++)
               function[i] = false;
           for(int i = 0; i < 2; i++)
               awal[i] = 0;
       } catch(NullPointerException e) { 
       }
   }
   public void getSqrt() {
       try {
           double value = Math.sqrt(Double.parseDouble(display.getText()));
           display.setText(Double.toString(value));
       } catch(NumberFormatException e) {
       }
   }
   public void getPosNeg() {
       try {
           double value = Double.parseDouble(display.getText());
           if(value != 0) {
               value = value * (-1);
               display.setText(Double.toString(value));
           }
           else {
           }
       } catch(NumberFormatException e) {
       }
   }
   public void getResult() {
       double result = 0;
       awal[1] = Double.parseDouble(display.getText());
       String temp0 = Double.toString(awal[0]);
       String temp1 = Double.toString(awal[1]);
       try {
          if(temp0.contains("-")) {
               String[] temp00 = temp0.split("-", 2);
               awal[0] = (Double.parseDouble(temp00[1]) * -1);
           }
           if(temp1.contains("-")) {
               String[] temp11 = temp1.split("-", 2);
               awal[1] = (Double.parseDouble(temp11[1]) * -1);
           }
        } catch(ArrayIndexOutOfBoundsException e) {

       }

       try {

           if(function[2] == true)

               result = awal[0] * awal[1];

           else if(function[3] == true)

               result = awal[0] / awal[1];

           else if(function[0] == true)

               result = awal[0] + awal[1];

           else if(function[1] == true)

               result = awal[0] - awal[1];

           display.setText(Double.toString(result));

           for(int i = 0; i < 4; i++)

               function[i] = false;

       } catch(NumberFormatException e) {

       }

   }
   public final void setDesign() {

       try {

           UIManager.setLookAndFeel(

                   "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");

       } catch(Exception e) {  

       }

   }

  public void actionPerformed(ActionEvent ae) {

       if(ae.getSource() == button[0])

           display.append("7");

       if(ae.getSource() == button[1])

           display.append("8");

       if(ae.getSource() == button[2])

           display.append("9");

       if(ae.getSource() == button[3]) {

           //add function[0]
        awal[0] = Double.parseDouble(display.getText());
           function[0] = true;

           display.setText("");

       }
       if(ae.getSource() == button[4])
           display.append("4");
       if(ae.getSource() == button[5])
           display.append("5");
       if(ae.getSource() == button[6])
           display.append("6");
       if(ae.getSource() == button[7]) {

           //subtract function[1]
        awal[0] = Double.parseDouble(display.getText());
           function[1] = true;
           display.setText("");
       }

       if(ae.getSource() == button[8])

           display.append("1");

       if(ae.getSource() == button[9])

           display.append("2");
       if(ae.getSource() == button[10])
           display.append("3");
       if(ae.getSource() == button[11]) {

           //multiply function[2]

        awal[0] = Double.parseDouble(display.getText());

           function[2] = true;
           display.setText("");
       }
       if(ae.getSource() == button[12])
           display.append(".");
       if(ae.getSource() == button[13]) {
           //divide function[3]

        awal[0] = Double.parseDouble(display.getText());
           function[3] = true;

           display.setText("");
       }
       if(ae.getSource() == button[14])
           clear();
       if(ae.getSource() == button[15])

           getSqrt();
       if(ae.getSource() == button[16])

           getPosNeg();
       if(ae.getSource() == button[17])

           getResult();

       if(ae.getSource() == button[18])
           display.append("0");
   }
   public static void main(String[] arguments) {
       calculator c = new calculator();
   }

}

maka akan terlihat seperti ini:


Jika program berjalan dengan benar maka akan mucul seperti gambar dibawah ini :
Terimakasih sudah mengunjungi blog saya semoga dengan penjelasan singkat dalam blog ini mudah di mengerti, bisa membantu pembelajaran dan menambah pengetahuan .

 D.O.C ( Dwi Okte Cahyaningrum )

0 komentar:

Posting Komentar

  • Blogger news

  • Blogroll