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);
source code lengkap :
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.
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