Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package guicalculator;
- import javax.swing.JApplet;
- import javax.swing.JTextField;
- import javax.swing.JPanel;
- import javax.swing.JButton;
- import java.awt.BorderLayout;
- import java.awt.GridLayout;
- import java.awt.FlowLayout;
- import java.awt.event.ActionListener;
- import java.awt.event.ActionEvent;
- /**
- *
- * @author Kevin
- */
- public class GuiCalc extends JApplet implements ActionListener{
- //public static final int WIDTH = 400;
- //public static final int HEIGHT = 400;
- public static final int NUMBERLIMIT = 22;
- private JTextField displayField;
- private int result = 0;
- private String[] currentNumberS = new String[NUMBERLIMIT];
- private int currentDigit = 0;
- private char currentOpp = ' ';
- public void init()
- {
- setLayout(new BorderLayout());
- JButton b0 = new JButton("0");
- b0.addActionListener(this);
- JButton b1 = new JButton("1");
- b1.addActionListener(this);
- JButton b2 = new JButton("2");
- b2.addActionListener(this);
- JButton b3 = new JButton("3");
- b3.addActionListener(this);
- JButton b4 = new JButton("4");
- b4.addActionListener(this);
- JButton b5 = new JButton("5");
- b5.addActionListener(this);
- JButton b6 = new JButton("6");
- b6.addActionListener(this);
- JButton b7 = new JButton("7");
- b7.addActionListener(this);
- JButton b8 = new JButton("8");
- b8.addActionListener(this);
- JButton b9 = new JButton("9");
- b9.addActionListener(this);
- JButton bplus = new JButton("+");
- bplus.addActionListener(this);
- JButton bmonus = new JButton("-");
- bmonus.addActionListener(this);
- JButton btimes = new JButton("*");
- btimes.addActionListener(this);
- JButton bdivide = new JButton("/");
- bdivide.addActionListener(this);
- JButton bmodulo = new JButton("%");
- bmodulo.addActionListener(this);
- JButton bsqrt = new JButton("Sqrt");
- bsqrt.addActionListener(this);
- JButton bexp = new JButton("^");
- bexp.addActionListener(this);
- JButton blog = new JButton("ilog2");
- blog.addActionListener(this);
- JButton bp = new JButton("-1");
- bp.addActionListener(this);
- JButton bs = new JButton("+1");
- bs.addActionListener(this);
- JButton breset = new JButton("Reset");
- breset.addActionListener(this);
- JButton bequals = new JButton("=");
- bequals.addActionListener(this);
- JPanel buttonPanel = new JPanel();
- buttonPanel.setLayout(new GridLayout(4,5));
- buttonPanel.add(b7);
- buttonPanel.add(b8);
- buttonPanel.add(b9);
- buttonPanel.add(bsqrt);
- buttonPanel.add(bs);
- buttonPanel.add(b4);
- buttonPanel.add(b5);
- buttonPanel.add(b6);
- buttonPanel.add(bmodulo);
- buttonPanel.add(bp);
- buttonPanel.add(b1);
- buttonPanel.add(b2);
- buttonPanel.add(b3);
- buttonPanel.add(bdivide);
- buttonPanel.add(blog);
- buttonPanel.add(b0);
- buttonPanel.add(bplus);
- buttonPanel.add(bmonus);
- buttonPanel.add(btimes);
- buttonPanel.add(bexp);
- add(buttonPanel, BorderLayout.CENTER);
- JPanel displayPanel = new JPanel();
- displayPanel.setLayout(new FlowLayout());
- displayField = new JTextField("", NUMBERLIMIT);
- displayPanel.add(displayField);
- displayPanel.add(breset);
- displayPanel.add(bequals);
- add(displayPanel, BorderLayout.NORTH);
- displayField.setEditable(false); //Prevents the texfield from being edited by the keyboard
- }
- public void actionPerformed(ActionEvent e)
- {
- String buttonCommand = e.getActionCommand();
- if( buttonCommand.equals("0") ) {
- if(currentOpp == '=')
- {
- reset();
- }
- currentNumberS[currentDigit] = "0";
- currentDigit++;
- displayField.setText(arrayToString(currentNumberS));
- }
- else if( buttonCommand.equals("1") ) {
- if(currentOpp == '=')
- {
- reset();
- }
- currentNumberS[currentDigit] = "1";
- currentDigit++;
- displayField.setText(arrayToString(currentNumberS));
- }
- else if( buttonCommand.equals("2") ) {
- if(currentOpp == '=')
- {
- reset();
- }
- currentNumberS[currentDigit] = "2";
- currentDigit++;
- displayField.setText(arrayToString(currentNumberS));
- }
- else if( buttonCommand.equals("3") ) {
- if(currentOpp == '=')
- {
- reset();
- }
- currentNumberS[currentDigit] = "3";
- currentDigit++;
- displayField.setText(arrayToString(currentNumberS));
- }
- else if( buttonCommand.equals("4") ) {
- if(currentOpp == '=')
- {
- reset();
- }
- currentNumberS[currentDigit] = "4";
- currentDigit++;
- displayField.setText(arrayToString(currentNumberS));
- }
- else if( buttonCommand.equals("5") ) {
- if(currentOpp == '=')
- {
- reset();
- }
- currentNumberS[currentDigit] = "5";
- currentDigit++;
- displayField.setText(arrayToString(currentNumberS));
- }
- else if( buttonCommand.equals("6") ) {
- if(currentOpp == '=')
- {
- reset();
- }
- currentNumberS[currentDigit] = "6";
- currentDigit++;
- displayField.setText(arrayToString(currentNumberS));
- }
- else if( buttonCommand.equals("7") ) {
- if(currentOpp == '=')
- {
- reset();
- }
- currentNumberS[currentDigit] = "7";
- currentDigit++;
- displayField.setText(arrayToString(currentNumberS));
- }
- else if( buttonCommand.equals("8") ) {
- if(currentOpp == '=')
- {
- reset();
- }
- currentNumberS[currentDigit] = "8";
- currentDigit++;
- displayField.setText(arrayToString(currentNumberS));
- }
- else if( buttonCommand.equals("9") ){
- if(currentOpp == '=')
- {
- reset();
- }
- currentNumberS[currentDigit] = "9";
- currentDigit++;
- displayField.setText(arrayToString(currentNumberS));
- }
- else if( buttonCommand.equals("+") ) {
- if(currentOpp == ' ')
- {
- result = makeInt(currentNumberS);
- currentOpp = '+';
- resetCurrentNumberS();
- }
- else if(currentOpp == '=')
- {
- currentOpp = '+';
- resetCurrentNumberS();
- }
- else
- {
- equals();
- currentOpp = '+';
- }
- }
- else if( buttonCommand.equals("-") ) {
- if(currentOpp == ' ')
- {
- result = makeInt(currentNumberS);
- currentOpp = '-';
- resetCurrentNumberS();
- }
- else if(currentOpp == '=')
- {
- currentOpp = '-';
- resetCurrentNumberS();
- }
- else
- {
- equals();
- currentOpp = '-';
- }
- }
- else if( buttonCommand.equals("*") ) {
- if(currentOpp == ' ')
- {
- result = makeInt(currentNumberS);
- currentOpp = '*';
- resetCurrentNumberS();
- }
- else if(currentOpp == '=')
- {
- currentOpp = '*';
- resetCurrentNumberS();
- }
- else
- {
- equals();
- currentOpp = '*';
- }
- }
- else if( buttonCommand.equals("/") ) {
- if(currentOpp == ' ')
- {
- result = makeInt(currentNumberS);
- currentOpp = '/';
- resetCurrentNumberS();
- }
- else if(currentOpp == '=')
- {
- currentOpp = '/';
- resetCurrentNumberS();
- }
- else
- {
- equals();
- currentOpp = '/';
- }
- }
- else if( buttonCommand.equals("%") ) {
- if(currentOpp == ' ')
- {
- result = makeInt(currentNumberS);
- currentOpp = '%';
- resetCurrentNumberS();
- }
- else if(currentOpp == '=')
- {
- currentOpp = '%';
- resetCurrentNumberS();
- }
- else
- {
- equals();
- currentOpp = '%';
- }
- }
- else if( buttonCommand.equals("Sqrt") ) {
- if(currentOpp == ' ')
- {
- currentOpp = 'r';
- equals();
- }
- else if(currentOpp == '=' && currentDigit == 0) //currentDigit=0 means the user hasn't entered a new number yet which means they want to perform sqrt on the result from the last function.
- {
- currentOpp = 'R';
- equals();
- }
- else if(currentOpp == '=' && currentDigit >= 1) //currentDigit>=1 means the user has entered a new numer, so sqrt should be performed on the new number.
- {
- currentOpp = 'r';
- equals();
- }
- else
- {
- equals();
- currentOpp = 'R';
- equals();
- }
- }
- else if( buttonCommand.equals("^") ) {
- if(currentOpp == ' ')
- {
- result = makeInt(currentNumberS);
- currentOpp = 'e';
- resetCurrentNumberS();
- }
- else if(currentOpp == '=')
- {
- currentOpp = 'e';
- resetCurrentNumberS();
- }
- else
- {
- equals();
- currentOpp = 'e';
- }
- }
- else if( buttonCommand.equals("ilog2") ) {
- if(currentOpp == ' ')
- {
- currentOpp = 'l';
- equals();
- }
- else if(currentOpp == '=' && currentDigit == 0) //currentDigit=0 means the user hasn't entered a new number yet which means they want to perform log on the result from the last function.
- {
- currentOpp = 'L';
- equals();
- }
- else if(currentOpp == '=' && currentDigit >= 1) //currentDigit>=1 means the user has entered a new numer, so log should be performed on the new number.
- {
- currentOpp = 'l';
- equals();
- }
- else
- {
- equals();
- currentOpp = 'L';
- equals();
- }
- }
- else if( buttonCommand.equals("-1") ) {
- if(currentOpp == ' ')
- {
- currentOpp = 'p';
- equals();
- }
- else if(currentOpp == '=' && currentDigit == 0) //currentDigit=0 means the user hasn't entered a new number yet which means they want to perform p on the result from the last function.
- {
- currentOpp = 'P';
- equals();
- }
- else if(currentOpp == '=' && currentDigit >= 1) //currentDigit>=1 means the user has entered a new numer, so p should be performed on the new number.
- {
- currentOpp = 'p';
- equals();
- }
- else
- {
- equals();
- currentOpp = 'P';
- equals();
- }
- }
- else if( buttonCommand.equals("+1") ) {
- if(currentOpp == ' ')
- {
- currentOpp = 's';
- equals();
- }
- else if(currentOpp == '=' && currentDigit == 0) //currentDigit=0 means the user hasn't entered a new number yet which means they want to perform s on the result from the last function.
- {
- currentOpp = 'S';
- equals();
- }
- else if(currentOpp == '=' && currentDigit >= 1) //currentDigit>=1 means the user has entered a new numer, so s should be performed on the new number.
- {
- currentOpp = 's';
- equals();
- }
- else
- {
- equals();
- currentOpp = 'S';
- equals();
- }
- }
- else if( buttonCommand.equals("=") )
- equals();
- else if( buttonCommand.equals("Reset") )
- reset();
- else
- displayField.setText("Unexpected error.");
- }
- private void equals()
- {
- switch(currentOpp)
- {
- case '+':
- result = Ops.plus(result, makeInt(currentNumberS) );
- resetCurrentNumberS();
- displayField.setText(Integer.toString(result));
- break;
- case '-':
- result = Ops.monus(result, makeInt(currentNumberS) );
- resetCurrentNumberS();
- displayField.setText(Integer.toString(result));
- break;
- case '*':
- result = Ops.times(result, makeInt(currentNumberS) );
- resetCurrentNumberS();
- displayField.setText(Integer.toString(result));
- break;
- case '/':
- result = Ops.divide(result, makeInt(currentNumberS), 0);
- resetCurrentNumberS();
- displayField.setText(Integer.toString(result));
- break;
- case '%':
- result = Ops.modulo(result, makeInt(currentNumberS) );
- resetCurrentNumberS();
- displayField.setText(Integer.toString(result));
- break;
- case 'r':
- result = Ops.sqrt(makeInt(currentNumberS), 1);
- resetCurrentNumberS();
- displayField.setText(Integer.toString(result));
- break;
- case 'R':
- result = Ops.sqrt(result, 1);
- resetCurrentNumberS();
- displayField.setText(Integer.toString(result));
- break;
- case 'e':
- result = Ops.power(result, makeInt(currentNumberS) );
- resetCurrentNumberS();
- displayField.setText(Integer.toString(result));
- break;
- case 'l':
- result = Ops.log(makeInt(currentNumberS), 0);
- resetCurrentNumberS();
- displayField.setText(Integer.toString(result));
- break;
- case 'L':
- result = Ops.log(result, 0);
- resetCurrentNumberS();
- displayField.setText(Integer.toString(result));
- break;
- case 'p':
- result = Ops.p(makeInt(currentNumberS) );
- resetCurrentNumberS();
- displayField.setText(Integer.toString(result));
- break;
- case 'P':
- result = Ops.p(result);
- resetCurrentNumberS();
- displayField.setText(Integer.toString(result));
- break;
- case 's':
- result = Ops.s(makeInt(currentNumberS) );
- resetCurrentNumberS();
- displayField.setText(Integer.toString(result));
- break;
- case 'S':
- result = Ops.s(result);
- resetCurrentNumberS();
- displayField.setText(Integer.toString(result));
- break;
- case '=':
- break;
- default:
- System.out.println("Unkown Error (Caused at switch case statment).");
- break;
- }
- currentOpp = '=';
- }
- private void reset()
- {
- result = 0;
- resetCurrentNumberS();
- currentOpp = ' ';
- displayField.setText("");
- }
- private static String arrayToString(String[] a)
- {
- String s = a[0];
- int i =1;
- while( a[i] != null)
- {
- s = s + a[i];
- i++;
- }
- return s;
- }
- private static int makeInt(String[] a)
- {
- String s = arrayToString(a);
- int number = Integer.parseInt(s);
- return number;
- }
- private void resetCurrentNumberS()
- {
- for(int i=0; i<NUMBERLIMIT; i++)
- {
- currentNumberS[i] = null;
- }
- currentDigit = 0;
- }
- }
Add Comment
Please, Sign In to add comment