Kalkulator dengan metode MVC (Model View Control)
Class Model :
package guiKalkulator_5302413069;
public class model {
double tambah1(double nilaia, double nilaib)
{
double jumlah = nilaia + nilaib;
return jumlah;
}
double kurang1(double nilaia, double nilaib)
{
double jumlah = nilaia - nilaib;
return jumlah;
}
double bagi1(double nilaia, double nilaib)
{
double jumlah = nilaia/nilaib;
return jumlah;
}
double kali1(double nilaia, double nilaib)
{
double jumlah = nilaia*nilaib;
return jumlah;
}
}
Class View :
package guiKalkulator_5302413069;
public class view extends javax.swing.JFrame
{
String angka_tampil;
double jumlah, nilaia, nilaib;
int pilihan;
public view()
{
initComponents();
angka_tampil = "";
}
@SuppressWarnings("unchecked")
public void initComponents() {
jTextField1 = new javax.swing.JTextField();
satu = new javax.swing.JButton();
dua = new javax.swing.JButton();
tiga = new javax.swing.JButton();
empat = new javax.swing.JButton();
lima = new javax.swing.JButton();
enam = new javax.swing.JButton();
tujuh = new javax.swing.JButton();
delapan = new javax.swing.JButton();
sembilan = new javax.swing.JButton();
nol = new javax.swing.JButton();
tambah = new javax.swing.JButton();
kurang = new javax.swing.JButton();
kali = new javax.swing.JButton();
bagi = new javax.swing.JButton();
samadengan = new javax.swing.JButton();
jTextField2 = new javax.swing.JTextField();
jTextField3 = new javax.swing.JTextField();
cos = new javax.swing.JButton();
sin = new javax.swing.JButton();
tan = new javax.swing.JButton();
hapus = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
koma = new javax.swing.JButton();
jButton1 = new javax.swing.JButton();
jTextField1.setText("jTextField1");
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setResizable(false);
satu.setFont(new java.awt.Font("Courier New", 1, 36)); // NOI18N
satu.setLabel("1");
satu.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
satuActionPerformed(evt);
}
});
dua.setFont(new java.awt.Font("Courier New", 1, 36)); // NOI18N
dua.setLabel("2");
dua.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
duaActionPerformed(evt);
}
});
tiga.setFont(new java.awt.Font("Courier New", 1, 36)); // NOI18N
tiga.setLabel("3");
tiga.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tigaActionPerformed(evt);
}
});
empat.setFont(new java.awt.Font("Courier New", 1, 36)); // NOI18N
empat.setLabel("4");
empat.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
empatActionPerformed(evt);
}
});
lima.setFont(new java.awt.Font("Courier New", 1, 36)); // NOI18N
lima.setLabel("5");
lima.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
limaActionPerformed(evt);
}
});
enam.setFont(new java.awt.Font("Courier New", 1, 36)); // NOI18N
enam.setLabel("6");
enam.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
enamActionPerformed(evt);
}
});
tujuh.setFont(new java.awt.Font("Courier New", 1, 36)); // NOI18N
tujuh.setLabel("7");
tujuh.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tujuhActionPerformed(evt);
}
});
delapan.setFont(new java.awt.Font("Courier New", 1, 36)); // NOI18N
delapan.setLabel("8");
delapan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
delapanActionPerformed(evt);
}
});
sembilan.setFont(new java.awt.Font("Courier New", 1, 36)); // NOI18N
sembilan.setLabel("9");
sembilan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
sembilanActionPerformed(evt);
}
});
nol.setFont(new java.awt.Font("Courier New", 1, 36)); // NOI18N
nol.setLabel("0");
nol.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
nolActionPerformed(evt);
}
});
tambah.setFont(new java.awt.Font("Courier New", 1, 36)); // NOI18N
tambah.setLabel("+");
tambah.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tambahActionPerformed(evt);
}
});
kurang.setFont(new java.awt.Font("Courier New", 1, 36)); // NOI18N
kurang.setLabel("-");
kurang.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
kurangActionPerformed(evt);
}
});
kali.setFont(new java.awt.Font("Courier New", 1, 36)); // NOI18N
kali.setLabel("x");
kali.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
kaliActionPerformed(evt);
}
});
bagi.setFont(new java.awt.Font("Courier New", 1, 36)); // NOI18N
bagi.setLabel("/");
bagi.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
bagiActionPerformed(evt);
}
});
samadengan.setFont(new java.awt.Font("Courier New", 1, 36)); // NOI18N
samadengan.setLabel("=");
samadengan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
samadenganActionPerformed(evt);
}
});
jTextField2.setEditable(false);
jTextField2.setFont(new java.awt.Font("Courier New", 1, 36)); // NOI18N
jTextField2.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
jTextField2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jTextField2ActionPerformed(evt);
}
});
jTextField3.setEditable(false);
jTextField3.setFont(new java.awt.Font("Courier New", 0, 14)); // NOI18N
jTextField3.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
cos.setFont(new java.awt.Font("Courier New", 1, 36)); // NOI18N
cos.setLabel("cos");
cos.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cosActionPerformed(evt);
}
});
sin.setFont(new java.awt.Font("Courier New", 1, 36)); // NOI18N
sin.setLabel("sin");
sin.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
sinActionPerformed(evt);
}
});
tan.setFont(new java.awt.Font("Courier New", 1, 36)); // NOI18N
tan.setLabel("tan");
tan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tanActionPerformed(evt);
}
});
hapus.setFont(new java.awt.Font("Courier New", 1, 36)); // NOI18N
hapus.setLabel("Delete");
hapus.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
hapusActionPerformed(evt);
}
});
jLabel1.setFont(new java.awt.Font("Monotype Corsiva", 1, 24)); // NOI18N
jLabel1.setText("Kalkulator 5302413069 ");
koma.setFont(new java.awt.Font("Courier New", 1, 36)); // NOI18N
koma.setLabel(".");
koma.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
komaActionPerformed(evt);
}
});
jButton1.setFont(new java.awt.Font("Courier New", 1, 36)); // NOI18N
jButton1.setLabel("-/+");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(76, 76, 76)
.addComponent(jLabel1)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jTextField3)
.addComponent(jTextField2)
.addGroup(layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(layout.createSequentialGroup()
.addComponent(empat)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lima)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(enam))
.addGroup(layout.createSequentialGroup()
.addComponent(satu)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(dua)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(tiga))
.addGroup(layout.createSequentialGroup()
.addComponent(tujuh)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(delapan)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(sembilan))
.addComponent(nol, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(kurang)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cos))
.addGroup(layout.createSequentialGroup()
.addComponent(kali)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(tan))
.addGroup(layout.createSequentialGroup()
.addComponent(bagi)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(koma, javax.swing.GroupLayout.PREFERRED_SIZE, 99, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(tambah)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(sin))))
.addGroup(layout.createSequentialGroup()
.addComponent(hapus, javax.swing.GroupLayout.PREFERRED_SIZE, 178, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(samadengan, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
.addGap(23, 23, 23))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(satu)
.addComponent(dua)
.addComponent(tiga)
.addComponent(tambah)
.addComponent(sin))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(empat)
.addComponent(lima)
.addComponent(enam)
.addComponent(kurang)
.addComponent(cos))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(tujuh)
.addComponent(delapan)
.addComponent(sembilan)
.addComponent(kali)
.addComponent(tan))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(nol)
.addComponent(bagi)
.addComponent(koma))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(hapus)
.addComponent(samadengan))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1)
.addContainerGap(12, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void satuActionPerformed(java.awt.event.ActionEvent evt) {
angka_tampil += "1";
jTextField2.setText(angka_tampil);
}
private void jTextField2ActionPerformed(java.awt.event.ActionEvent evt) {
}
double hitungan;
private void samadenganActionPerformed(java.awt.event.ActionEvent evt) {
control aksi = new control();
if (pilihan<=4)
{
hitungan = aksi.hitungan(nilaia, angka_tampil, pilihan);
String hasil = Double.toString(hitungan);
jTextField2.setText(hasil);
String tampil=Double.toString(nilaia)+" "+aksi.tanda+" "+angka_tampil+" = "+hasil;
jTextField3.setText(tampil);
}
else
{
String hasil= Double.toString(hitungan);
jTextField2.setText(hasil);
String tampil=aksi.tanda+" "+Double.toString(nilaia)+" = "+hasil;
jTextField3.setText(tampil);
}
}
private void duaActionPerformed(java.awt.event.ActionEvent evt) {
angka_tampil += "2";
jTextField2.setText(angka_tampil);
}
private void tigaActionPerformed(java.awt.event.ActionEvent evt) {
angka_tampil += "3";
jTextField2.setText(angka_tampil);
}
private void empatActionPerformed(java.awt.event.ActionEvent evt) {
angka_tampil += "4";
jTextField2.setText(angka_tampil);
}
private void limaActionPerformed(java.awt.event.ActionEvent evt) {
angka_tampil += "5";
jTextField2.setText(angka_tampil);
}
private void enamActionPerformed(java.awt.event.ActionEvent evt) {
angka_tampil += "6";
jTextField2.setText(angka_tampil);
}
private void tujuhActionPerformed(java.awt.event.ActionEvent evt) {
angka_tampil += "7";
jTextField2.setText(angka_tampil);
}
private void delapanActionPerformed(java.awt.event.ActionEvent evt) {
angka_tampil += "8";
jTextField2.setText(angka_tampil);
}
private void sembilanActionPerformed(java.awt.event.ActionEvent evt) {
angka_tampil += "9";
jTextField2.setText(angka_tampil);
}
private void nolActionPerformed(java.awt.event.ActionEvent evt) {
angka_tampil += "0";
jTextField2.setText(angka_tampil);
}
private void tambahActionPerformed(java.awt.event.ActionEvent evt) {
if (hitungan==0.0)
{
nilaia=Double.parseDouble(angka_tampil);
angka_tampil="";
jTextField2.setText("+");
pilihan=1;
}
else {
nilaia=hitungan;
angka_tampil="";
jTextField2.setText("+");
pilihan=1;
}
}
private void kurangActionPerformed(java.awt.event.ActionEvent evt) {
if (hitungan==0.0)
{
nilaia=Double.parseDouble(angka_tampil);
angka_tampil="";
jTextField2.setText("-");
pilihan=2;
}
else {
nilaia=hitungan;
angka_tampil="";
jTextField2.setText("-");
pilihan=2;
}
}
private void bagiActionPerformed(java.awt.event.ActionEvent evt) {
if (hitungan==0.0)
{
nilaia=Double.parseDouble(angka_tampil);
angka_tampil="";
jTextField2.setText("/");
pilihan=3;
}
else {
nilaia=hitungan;
angka_tampil="";
jTextField2.setText("/");
pilihan=3;
}
}
private void kaliActionPerformed(java.awt.event.ActionEvent evt) {
if (hitungan==0.0)
{
nilaia=Double.parseDouble(angka_tampil);
angka_tampil="";
jTextField2.setText("*");
pilihan=4;
}
else {
nilaia=hitungan;
angka_tampil="";
jTextField2.setText("*");
pilihan=4;
}
}
private void hapusActionPerformed(java.awt.event.ActionEvent evt) {
jTextField2.setText("");
jTextField3.setText("");
nilaia=0.0;
nilaib=0.0;
jumlah=0.0;
angka_tampil="";
hitungan=0.0;
}
private void komaActionPerformed(java.awt.event.ActionEvent evt) {
angka_tampil+=".";
jTextField2.setText(angka_tampil);
}
private void sinActionPerformed(java.awt.event.ActionEvent evt) {
nilaia=Double.parseDouble(angka_tampil);
jTextField2.setText("sin " + angka_tampil);
angka_tampil="";
pilihan=5;
}
private void cosActionPerformed(java.awt.event.ActionEvent evt) {
nilaia=Double.parseDouble(angka_tampil);
jTextField2.setText("Cos " + angka_tampil);
angka_tampil="";
pilihan=6;
}
private void tanActionPerformed(java.awt.event.ActionEvent evt) {
nilaia=Double.parseDouble(angka_tampil);
jTextField2.setText("Tan " + angka_tampil);
angka_tampil="";
pilihan=7;
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{
nilaia= -nilaia;
//nilaib=(-nilaib);
jTextField2.setText("-"+angka_tampil);
}
private javax.swing.JButton bagi;
private javax.swing.JButton cos;
private javax.swing.JButton delapan;
private javax.swing.JButton dua;
private javax.swing.JButton empat;
private javax.swing.JButton enam;
private javax.swing.JButton hapus;
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JTextField jTextField1;
public javax.swing.JTextField jTextField2;
public javax.swing.JTextField jTextField3;
private javax.swing.JButton kali;
private javax.swing.JButton koma;
private javax.swing.JButton kurang;
private javax.swing.JButton lima;
private javax.swing.JButton nol;
private javax.swing.JButton samadengan;
private javax.swing.JButton satu;
private javax.swing.JButton sembilan;
private javax.swing.JButton sin;
private javax.swing.JButton tambah;
private javax.swing.JButton tan;
private javax.swing.JButton tiga;
private javax.swing.JButton tujuh;
}
Class Control :
package guiKalkulator_5302413069;
public class control {
private int number;
private String result;
int pilihan = 0;
public control() {
}
int toInt(String input) {
number = Integer.parseInt(input);
return number;
}
String toString(double input) {
result = Double.toString(input);
return result;
}
public double translate(String a)
{
double hasil= Double.parseDouble(a);
return hasil;
}
double jumlah;
String tanda;
public double hitungan(double a, String b, int pilih){
model baru = new model();
double nilaib=translate(b);
view anyar = new view();
switch(pilih){
case 1:
jumlah = baru.tambah1(a, nilaib);
tanda = "+";
break;
case 2:
jumlah = baru.kurang1(a, nilaib);
tanda = "-";
break;
case 3:
jumlah = baru.bagi1(a, nilaib);
tanda = ":";
break;
case 4:
jumlah = baru.kali1(a, nilaib);
tanda = "*";
break;
default:
break;
}
return jumlah;
}
public double trigonometri(double a,int pilih){
switch(pilih)
{
case 5:
jumlah = Math.sin(Math.toRadians(a));
tanda="sin";
break;
case 6:
jumlah = Math.cos(Math.toRadians(a));
tanda="cos";
break;
case 7:
jumlah = Math.tan(Math.toRadians(a));
tanda="tan";
break;
default:
break;
}
return jumlah;
}
}
package guiKalkulator_5302413069;
public class Main {
public static void main(String args[])
{
view kalkulatorGUI = new view();
kalkulatorGUI.setVisible(true);
}
}
Saat Di Run :