Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.BorderLayout;
- import java.awt.Color;
- import java.awt.Font;
- import java.awt.GridLayout;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.text.DecimalFormat;
- import javax.swing.*;
- import javax.swing.border.*;
- public class Calculator {
- JFrame frame;
- JTextField numField;
- JTextField hisField;
- JPanel buttonsPanel;
- JPanel fieldPanel;
- String numDisplay = "0";
- String hisDisplay = "";
- double tempNum1;
- double tempNum2;
- DecimalFormat df = new DecimalFormat("########.########");
- boolean calculate;
- String operator;
- boolean reset;
- public static void main(String[] args) {
- Calculator calc = new Calculator();
- calc.buildGUI();
- }
- public void buildGUI() {
- //make the Frame
- frame = new JFrame("Calculator");
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- //Aesthetics
- Color backgroundColor = new Color(56, 56, 56);
- //Make the border/background
- BorderLayout layout = new BorderLayout();
- JPanel background = new JPanel(layout);
- background.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
- background.setBackground(backgroundColor);
- // Build the fieldPanel
- // Build the numField
- numField = new JTextField(numDisplay);
- numField.setEditable(false);
- numField.setFont(new Font("Arial", Font.BOLD, 60));
- numField.setBackground(backgroundColor);
- numField.setForeground(Color.WHITE);
- Border line = BorderFactory.createLineBorder(Color.WHITE, 0);
- Border empty = new EmptyBorder(0, 10, 10, 10);
- CompoundBorder border = new CompoundBorder(line, empty);
- numField.setBorder(border);
- numField.setHorizontalAlignment(JTextField.RIGHT);
- //Build the hisField
- hisField = new JTextField("");
- hisField.setEditable(false);
- hisField.setFont(new Font("Arial", Font.BOLD, 20));
- hisField.setBackground(backgroundColor);
- hisField.setForeground(Color.lightGray);
- hisField.setHorizontalAlignment(JTextField.RIGHT);
- hisField.setBorder(new EmptyBorder(50,0,10,10));
- //Build the Panel
- fieldPanel = new JPanel();
- fieldPanel.setLayout(new BoxLayout(fieldPanel, BoxLayout.Y_AXIS));
- fieldPanel.add(hisField);
- fieldPanel.add(numField);
- //make Grid
- GridLayout grid = new GridLayout(5,4);
- grid.setVgap(1);
- grid.setHgap(3);
- //make the Panel for Buttons
- buttonsPanel = new JPanel(grid);
- buttonsPanel.setBackground(backgroundColor);
- buttonsPanel.setBorder( new EmptyBorder(10, 0, 0, 0));
- //build Buttons
- Font buttonsFont = new Font("Arial", Font.PLAIN, 25);
- Color funcButtonsColor = new Color(24, 24, 24);
- Color numButtonsColor = Color.BLACK;
- JButton CE = new JButton("CE");
- CE.setBackground(funcButtonsColor);
- CE.setForeground(Color.lightGray);
- CE.setFont(buttonsFont);
- CE.setBorder(new LineBorder(backgroundColor, 5));
- buttonsPanel.add(CE);
- CE.addActionListener(new CEListener());
- JButton C = new JButton("C");
- C.setBackground(funcButtonsColor);
- C.setForeground(Color.lightGray);
- C.setFont(buttonsFont);
- C.setBorder(new LineBorder(backgroundColor, 5));
- buttonsPanel.add(C);
- C.addActionListener(new CListener());
- JButton del = new JButton("del");
- del.setBackground(funcButtonsColor);
- del.setForeground(Color.lightGray);
- del.setFont(buttonsFont);
- del.setBorder(new LineBorder(backgroundColor, 5));
- buttonsPanel.add(del);
- del.addActionListener(new delListener());
- JButton div = new JButton("÷");
- div.setBackground(funcButtonsColor);
- div.setForeground(Color.lightGray);
- div.setFont(buttonsFont);
- div.setBorder(new LineBorder(backgroundColor, 5));
- buttonsPanel.add(div);
- div.addActionListener(new divListener());
- JButton seven = new JButton("7");
- seven.setBackground(numButtonsColor);
- seven.setForeground(Color.lightGray);
- seven.setFont(buttonsFont);
- seven.setBorder(new LineBorder(backgroundColor, 5));
- buttonsPanel.add(seven);
- seven.addActionListener(new sevenListener());
- JButton eight = new JButton("8");
- eight.setBackground(numButtonsColor);
- eight.setForeground(Color.lightGray);
- eight.setFont(buttonsFont);
- eight.setBorder(new LineBorder(backgroundColor, 5));
- buttonsPanel.add(eight);
- eight.addActionListener(new eightListener());
- JButton nine = new JButton("9");
- nine.setBackground(numButtonsColor);
- nine.setForeground(Color.lightGray);
- nine.setFont(buttonsFont);
- nine.setBorder(new LineBorder(backgroundColor, 5));
- buttonsPanel.add(nine);
- nine.addActionListener(new nineListener());
- JButton times = new JButton("×");
- times.setBackground(funcButtonsColor);
- times.setForeground(Color.lightGray);
- times.setFont(buttonsFont);
- times.setBorder(new LineBorder(backgroundColor, 5));
- buttonsPanel.add(times);
- times.addActionListener(new timesListener());
- JButton four = new JButton("4");
- four.setBackground(numButtonsColor);
- four.setForeground(Color.lightGray);
- four.setFont(buttonsFont);
- four.setBorder(new LineBorder(backgroundColor, 5));
- buttonsPanel.add(four);
- four.addActionListener(new fourListener());
- JButton five = new JButton("5");
- five.setBackground(numButtonsColor);
- five.setForeground(Color.lightGray);
- five.setFont(buttonsFont);
- five.setBorder(new LineBorder(backgroundColor, 5));
- buttonsPanel.add(five);
- five.addActionListener(new fiveListener());
- JButton six = new JButton("6");
- six.setBackground(numButtonsColor);
- six.setForeground(Color.lightGray);
- six.setFont(buttonsFont);
- six.setBorder(new LineBorder(backgroundColor, 5));
- buttonsPanel.add(six);
- six.addActionListener(new sixListener());
- JButton minus = new JButton("−");
- minus.setBackground(funcButtonsColor);
- minus.setForeground(Color.lightGray);
- minus.setFont(buttonsFont);
- minus.setBorder(new LineBorder(backgroundColor, 5));
- buttonsPanel.add(minus);
- minus.addActionListener(new minusListener());
- JButton one = new JButton("1");
- one.setBackground(numButtonsColor);
- one.setForeground(Color.lightGray);
- one.setFont(buttonsFont);
- one.setBorder(new LineBorder(backgroundColor, 5));
- buttonsPanel.add(one);
- one.addActionListener(new oneListener());
- JButton two = new JButton("2");
- two.setBackground(numButtonsColor);
- two.setForeground(Color.lightGray);
- two.setFont(buttonsFont);
- two.setBorder(new LineBorder(backgroundColor, 5));
- buttonsPanel.add(two);
- two.addActionListener(new twoListener());
- JButton three = new JButton("3");
- three.setBackground(numButtonsColor);
- three.setForeground(Color.lightGray);
- three.setFont(buttonsFont);
- three.setBorder(new LineBorder(backgroundColor, 5));
- buttonsPanel.add(three);
- three.addActionListener(new threeListener());
- JButton plus = new JButton("+");
- plus.setBackground(funcButtonsColor);
- plus.setForeground(Color.lightGray);
- plus.setFont(buttonsFont);
- plus.setBorder(new LineBorder(backgroundColor, 5));
- buttonsPanel.add(plus);
- plus.addActionListener(new plusListener());
- JButton plusMinus = new JButton("±");
- plusMinus.setBackground(funcButtonsColor);
- plusMinus.setForeground(Color.lightGray);
- plusMinus.setFont(buttonsFont);
- plusMinus.setBorder(new LineBorder(backgroundColor, 5));
- buttonsPanel.add(plusMinus);
- plusMinus.addActionListener(new plusMinusListener());
- JButton zero = new JButton("0");
- zero.setBackground(numButtonsColor);
- zero.setForeground(Color.lightGray);
- zero.setFont(buttonsFont);
- zero.setBorder(new LineBorder(backgroundColor, 5));
- buttonsPanel.add(zero);
- zero.addActionListener(new zeroListener());
- JButton dec = new JButton(".");
- dec.setBackground(funcButtonsColor);
- dec.setForeground(Color.lightGray);
- dec.setFont(buttonsFont);
- dec.setBorder(new LineBorder(backgroundColor, 5));
- buttonsPanel.add(dec);
- dec.addActionListener(new decListener());
- JButton solve = new JButton("=");
- solve.setBackground(funcButtonsColor);
- solve.setForeground(Color.lightGray);
- solve.setFont(buttonsFont);
- solve.setBorder(new LineBorder(backgroundColor, 5));
- buttonsPanel.add(solve);
- solve.addActionListener(new solveListener());
- background.add(BorderLayout.NORTH, fieldPanel);
- background.add(BorderLayout.CENTER, buttonsPanel);
- frame.getContentPane().add(background);
- frame.setSize(400, 550);
- frame.setVisible(true);
- }
- public void operate() {
- try {
- if (operator.equals("divide")) {
- tempNum1= tempNum1 / tempNum2;
- }
- if (operator.equals("multiply")) {
- tempNum1 = tempNum1 * tempNum2;
- }
- if (operator.equals("subtract")) {
- tempNum1= tempNum1 - tempNum2;
- }
- if (operator.equals("add")) {
- tempNum1 = tempNum1 + tempNum2;
- }
- } catch (Exception ex) {}
- }
- public class CEListener implements ActionListener {
- @Override
- public void actionPerformed(ActionEvent a) {
- numDisplay = "0";
- numField.setText(numDisplay);
- }
- }
- public class CListener implements ActionListener {
- @Override
- public void actionPerformed(ActionEvent a) {
- numDisplay = "0";
- hisDisplay = "";
- hisField.setText(hisDisplay);
- numField.setText(numDisplay);
- calculate = false;
- operator = null;
- }
- }
- public class delListener implements ActionListener {
- @Override
- public void actionPerformed(ActionEvent a) {
- if (numField.getText().length() == 1) {
- numDisplay = "0";
- numField.setText(numDisplay);
- } else {
- numDisplay = numField.getText().substring(0, numField.getText().length() - 1)+ "";
- numField.setText(numDisplay);
- }
- }
- }
- public class solveListener implements ActionListener {
- @Override
- public void actionPerformed(ActionEvent a) {
- tempNum2 = Double.parseDouble(numField.getText());
- operate();
- numDisplay = df.format(tempNum1);
- numField.setText(df.format(tempNum1));
- calculate = false;
- reset = true;
- hisDisplay = "";
- tempNum1 = 0.0d;
- tempNum2 = 0.0d;
- hisField.setText(hisDisplay);
- }
- }
- public class plusMinusListener implements ActionListener {
- @Override
- public void actionPerformed(ActionEvent a) {
- double negative = Double.parseDouble(numField.getText());
- negative = -negative;
- numDisplay = String.valueOf(df.format(negative));
- numField.setText(numDisplay);
- }
- }
- public class decListener implements ActionListener {
- @Override
- public void actionPerformed(ActionEvent a) {
- numDisplay = numField.getText() + ".";
- numField.setText(numDisplay);
- }
- }
- public class divListener implements ActionListener {
- @Override
- public void actionPerformed(ActionEvent a) {
- hisDisplay = hisDisplay + numDisplay + " ÷ ";
- hisField.setText(hisDisplay);
- if (calculate) {
- tempNum2 = Double.parseDouble(numDisplay);
- operate();
- numDisplay = df.format(tempNum1);
- numField.setText(numDisplay);
- } else {
- operator = "divide";
- tempNum1 = Double.parseDouble(numDisplay);
- }
- calculate = true;
- operator = "divide";
- reset = true;
- }
- }
- public class timesListener implements ActionListener {
- @Override
- public void actionPerformed(ActionEvent a) {
- hisDisplay = hisDisplay + numDisplay + " × ";
- hisField.setText(hisDisplay);
- if (calculate) {
- tempNum2 = Double.parseDouble(numDisplay);
- operate();
- numDisplay = df.format(tempNum1);
- numField.setText(numDisplay);
- } else {
- operator = "multiply";
- tempNum1 = Double.parseDouble(numDisplay);
- }
- calculate = true;
- operator = "multiply";
- reset = true;
- }
- }
- public class minusListener implements ActionListener {
- @Override
- public void actionPerformed(ActionEvent a) {
- hisDisplay = hisDisplay + numDisplay + " − ";
- hisField.setText(hisDisplay);
- if (calculate) {
- tempNum2 = Double.parseDouble(numDisplay);
- operate();
- numDisplay = df.format(tempNum1);
- numField.setText(numDisplay);
- } else {
- operator = "subtract";
- tempNum1 = Double.parseDouble(numDisplay);
- }
- calculate = true;
- operator = "subtract";
- reset = true;
- }
- }
- public class plusListener implements ActionListener {
- @Override
- public void actionPerformed(ActionEvent a) {
- hisDisplay = hisDisplay + numDisplay + " + ";
- hisField.setText(hisDisplay);
- if (calculate) {
- tempNum2 = Double.parseDouble(numDisplay);
- operate();
- numDisplay = df.format(tempNum1);
- numField.setText(numDisplay);
- } else {
- operator = "add";
- tempNum1 = Double.parseDouble(numDisplay);
- }
- calculate = true;
- operator = "add";
- reset = true;
- }
- }
- public class oneListener implements ActionListener {
- @Override
- public void actionPerformed(ActionEvent a) {
- if (numField.getText().equals("0")) {
- numDisplay = "1";
- } else {
- numDisplay = numField.getText() + "1";
- }
- if (reset) {
- numDisplay = "1";
- reset = false;
- }
- numField.setText(numDisplay);
- }
- }
- public class twoListener implements ActionListener {
- @Override
- public void actionPerformed(ActionEvent a) {
- if (numField.getText().equals("0")) {
- numDisplay = "2";
- } else {
- numDisplay = numField.getText() + "2";
- }
- if (reset) {
- numDisplay = "2";
- reset = false;
- }
- numField.setText(numDisplay);
- }
- }
- public class threeListener implements ActionListener {
- @Override
- public void actionPerformed(ActionEvent a) {
- if (numField.getText().equals("0")) {
- numDisplay = "3";
- } else {
- numDisplay = numField.getText() + "3";
- }
- if (reset) {
- numDisplay = "3";
- reset = false;
- }
- numField.setText(numDisplay);
- }
- }
- public class fourListener implements ActionListener {
- @Override
- public void actionPerformed(ActionEvent a) {
- if (numField.getText().equals("0")) {
- numDisplay = "4";
- } else {
- numDisplay = numField.getText() + "4";
- }
- if (reset) {
- numDisplay = "4";
- reset = false;
- }
- numField.setText(numDisplay);
- }
- }
- public class fiveListener implements ActionListener {
- @Override
- public void actionPerformed(ActionEvent a) {
- if (numField.getText().equals("0")) {
- numDisplay = "5";
- } else {
- numDisplay = numField.getText() + "5";
- }
- if (reset) {
- numDisplay = "5";
- reset = false;
- }
- numField.setText(numDisplay);
- }
- }
- public class sixListener implements ActionListener {
- @Override
- public void actionPerformed(ActionEvent a) {
- if (numField.getText().equals("0")) {
- numDisplay = "6";
- } else {
- numDisplay = numField.getText() + "6";
- }
- if (reset) {
- numDisplay = "6";
- reset = false;
- }
- numField.setText(numDisplay);
- }
- }
- public class sevenListener implements ActionListener {
- @Override
- public void actionPerformed(ActionEvent a) {
- if (numField.getText().equals("0")) {
- numDisplay = "7";
- } else {
- numDisplay = numField.getText() + "7";
- }
- if (reset) {
- numDisplay = "7";
- reset = false;
- }
- numField.setText(numDisplay);
- }
- }
- public class eightListener implements ActionListener {
- @Override
- public void actionPerformed(ActionEvent a) {
- if (numField.getText().equals("0")) {
- numDisplay = "8";
- } else {
- numDisplay = numField.getText() + "8";
- }
- if (reset) {
- numDisplay = "8";
- reset = false;
- }
- numField.setText(numDisplay);
- }
- }
- public class nineListener implements ActionListener {
- @Override
- public void actionPerformed(ActionEvent a) {
- if (numField.getText().equals("0")) {
- numDisplay = "9";
- } else {
- numDisplay = numField.getText() + "9";
- }
- if (reset) {
- numDisplay = "9";
- reset = false;
- }
- numField.setText(numDisplay);
- }
- }
- public class zeroListener implements ActionListener {
- @Override
- public void actionPerformed(ActionEvent a) {
- if (numField.getText().equals("0")) {
- numDisplay = "0";
- } else {
- numDisplay = numField.getText() + "0";
- }
- if (reset) {
- numDisplay = "0";
- reset = false;
- }
- numField.setText(numDisplay);
- }
- }
- }
Add Comment
Please, Sign In to add comment