Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //package v1ch09.Calculator;
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.*;
- import java.util.ArrayList;
- /*import java.util.Arrays;
- import java.util.Collection;
- import java.util.Scanner;*/
- /**
- * @version 1.33 2007-06-12
- * @author Cay Horstmann
- */
- public class Calculator
- {
- public static void main(String[] args)
- {
- EventQueue.invokeLater(new Runnable()
- {
- public void run()
- {
- CalculatorFrame frame = new CalculatorFrame();
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.setVisible(true);
- }
- });
- }
- }
- /**
- * A frame with a calculator panel.
- */
- class CalculatorFrame extends JFrame
- {
- public CalculatorFrame()
- {
- setTitle("Calculator");
- CalculatorPanel panel = new CalculatorPanel();
- add(panel);
- pack();
- }
- }
- /**
- * A panel with calculator buttons and a result display.
- */
- class CalculatorPanel extends JPanel
- {
- public CalculatorPanel()
- {
- setLayout(new BorderLayout());
- result = 0;
- lastCommand = "=";
- start = true;
- // add the display
- display = new JButton("0");
- display.setEnabled(false);
- add(display, BorderLayout.NORTH);
- ActionListener insert = new InsertAction();
- ActionListener command = new CommandAction();
- // add the buttons in a 4 x 4 grid
- panel = new JPanel();
- panel.setLayout(new GridLayout(4, 4));
- addButton("7", insert);
- addButton("8", insert);
- addButton("9", insert);
- addButton("/", command);
- addButton("*", command);
- addButton("4", insert);
- addButton("5", insert);
- addButton("6", insert);
- addButton("+", command);
- addButton("-", command);
- addButton("1", insert);
- addButton("2", insert);
- addButton("3", insert);
- addButton(".", insert);
- addButton("=", command);
- addButton("0", insert);
- addButton("MS", command);
- addButton("MR", command);
- add(panel, BorderLayout.CENTER);
- }
- /**
- * Adds a button to the center panel.
- * @param label the button label
- * @param listener the button listener
- */
- private void addButton(String label, ActionListener listener)
- {
- JButton button = new JButton(label);
- button.addActionListener(listener);
- panel.add(button);
- }
- /**
- * This action inserts the button action string to the end of the display text.
- */
- private class InsertAction implements ActionListener
- {
- public void actionPerformed(ActionEvent event)
- {
- String input = event.getActionCommand();
- if (start)
- {
- display.setText("");
- start = false;
- }
- display.setText(display.getText() + input);
- }
- }
- /**
- * This action executes the command that the button action string denotes.
- */
- public class CommandAction implements ActionListener
- {
- // int flag = 0;
- public void actionPerformed(ActionEvent event)
- {
- String command = event.getActionCommand();
- if (start)
- {
- //String command = event.getActionCommand();
- if (command.equals("-"))
- {
- display.setText(command);
- start = false;
- }
- else if (command.equals("MS"))
- {
- lastCommand = command;
- calculate(Double.parseDouble(display.getText()));
- }
- else lastCommand = command;
- }
- else
- {
- if (command.equals("MS"))
- {
- lastCommand = command;
- //calculate(Double.parseDouble(display.getText()));
- }
- calculate(Double.parseDouble(display.getText()));
- lastCommand = command;
- start = true;
- }
- }
- }
- /**
- * Carries out the pending calculation.
- * @param x the value to be accumulated with the prior result.
- */
- public void calculate(double x)
- {
- Stack_10080 obj = new Stack_10080();
- if (lastCommand.equals("+"))
- {
- result += x;
- display.setText("" + result);
- }
- else if (lastCommand.equals("-"))
- {
- result -= x;
- display.setText("" + result);
- }
- else if (lastCommand.equals("*"))
- {
- result *= x;
- display.setText("" + result);
- }
- else if (lastCommand.equals("/"))
- {
- result /= x;
- display.setText("" + result);
- }
- else if (lastCommand.equals("="))
- {
- result = x;
- display.setText("" + result);
- }
- else if (lastCommand.equals("MS"))
- {
- obj.push(x);
- lastCommand = "=";
- result=x;
- //lastCommand = "=";
- //result = 0;
- //display.setText("" + "0.0");
- }
- else if (lastCommand.equals("MR"))
- {
- Double temp = obj.pop();
- result = temp;
- }
- //display.setText("" + result);
- }
- private JButton display;
- private JPanel panel;
- private double result;
- private String lastCommand;
- private boolean start;
- }
- class Stack_10080 {
- ArrayList<Double>str = new ArrayList<Double>(1);
- public void push(Double str2)
- {
- str.add(str2);
- System.out.println(str2);
- /*for(int i=0;i<str.size();i++)
- {
- System.out.println(str.get(i));
- }*/
- }
- public Double pop()
- {
- Double temp1,temp3=0.0;
- if(str.size()==0)
- {
- return temp3;
- }
- temp1 = str.get(str.size()-1);
- str.remove(str.size()-1);
- System.out.println(temp1);
- return temp1;
- }
- }
Add Comment
Please, Sign In to add comment