Senin, 14 Desember 2015

Membuat Kalkulator dengan Java (Eclipse)

Bahasa pemrograman java dapat digunakan untuk membuat aplikasi-aplikasi komputer (dekstop), aplikasi mobile, aplikasi android, maupun yang lainnya. Dalam posting kali ini akan dibuat aplikasi sederhana dengan java aplikasi eclipse berbasis GUI. Berikut source code untuk membuat 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[] dimW = {300,45,100,90};
        int[] dimH = {35, 40};
        Dimension displayDimension = new Dimension(dimW[0], dimH[0]);
        Dimension regularDimension = new Dimension(dimW[1], dimH[1]);
        Dimension rColumnDimension = new Dimension(dimW[2], dimH[1]);
        Dimension zeroButDimension = new Dimension(dimW[3], dimH[1]);
        boolean[] function = new boolean[4];
        double[] temporary = {0, 0};
        JTextArea display = new JTextArea(1,20);
        Font font = new Font("Times new Roman", Font.BOLD, 14);
        
        Calculator() {
            super("Kalkulator");
            setDesign();
            setSize(380, 250);
            setResizable(false);
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            GridLayout grid = new GridLayout(5,5);
        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.RIGHT_TO_LEFT);
            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++)
                    temporary[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;
            temporary[1] = Double.parseDouble(display.getText());
            String temp0 = Double.toString(temporary[0]);
            String temp1 = Double.toString(temporary[1]);
            try {
                if(temp0.contains("-")) {
                    String[] temp00 = temp0.split("-", 2);
                    temporary[0] = (Double.parseDouble(temp00[1]) * -1);
                }
                if(temp1.contains("-")) {
                    String[] temp11 = temp1.split("-", 2);
                    temporary[1] = (Double.parseDouble(temp11[1]) * -1);
                }
            } catch(ArrayIndexOutOfBoundsException e) {
            }
            try {
                if(function[2] == true)
                    result = temporary[0] * temporary[1];
                else if(function[3] == true)
                    result = temporary[0] / temporary[1];
                else if(function[0] == true)
                    result = temporary[0] + temporary[1];
                else if(function[1] == true)
                    result = temporary[0] - temporary[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) { 
            }
        }
        
        @Override
        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]
                temporary[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]
                temporary[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]
                temporary[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]
                temporary[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();
        }
}


Berikut adalah hasil dari source code di atas:


Tidak ada komentar:

Posting Komentar