Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Calculator.java
- package net.discfiresoftworks.calculator;
- import java.awt.BorderLayout;
- import java.awt.Color;
- import java.awt.GridLayout;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.util.ArrayList;
- import javax.swing.BorderFactory;
- import javax.swing.BoxLayout;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- import javax.swing.JTextField;
- public class Calculator extends JFrame
- {
- private static final long serialVersionUID = 1L;
- public JPanel wrapper = new JPanel();
- public static JTextField calc = new JTextField();
- public JPanel buttons = new JPanel();
- public JPanel funcs = new JPanel();
- public JPanel nums = new JPanel();
- public JPanel bln1 = new JPanel();
- public JPanel bln2 = new JPanel();
- public JPanel bln3 = new JPanel();
- public JPanel bln4 = new JPanel();
- public static ArrayList<String> calculate = new ArrayList<String>();
- public static void main(String[] args)
- {
- new Calculator();
- }
- public Calculator()
- {
- this.setSize(200, 220);
- this.setResizable(false);
- this.setTitle("Calculator");
- this.setDefaultCloseOperation(3);
- this.setLocationRelativeTo(null);
- this.setLayout(new BorderLayout());
- wrapper.setBorder(BorderFactory.createLineBorder(Color.WHITE, 5));
- wrapper.setLayout(new BorderLayout());
- calc.setBorder(BorderFactory.createEtchedBorder());
- StyledButton point = new StyledButton(".");
- point.addActionListener(new ActionListener(){
- @Override
- public void actionPerformed(ActionEvent e)
- {
- calc.setText(calc.getText() + ".");
- }
- });
- bln1.add(new NumButton(calc, 7));
- bln1.add(new NumButton(calc, 8));
- bln1.add(new NumButton(calc, 9));
- bln2.add(new NumButton(calc, 4));
- bln2.add(new NumButton(calc, 5));
- bln2.add(new NumButton(calc, 6));
- bln3.add(new NumButton(calc, 1));
- bln3.add(new NumButton(calc, 2));
- bln3.add(new NumButton(calc, 3));
- bln4.add(new NumButton(calc, 0));
- bln4.add(point);
- nums.setLayout(new BoxLayout(nums, BoxLayout.Y_AXIS));
- nums.add(bln1);
- nums.add(bln2);
- nums.add(bln3);
- nums.add(bln4);
- StyledButton clear = new StyledButton("C");
- clear.addActionListener(new ActionListener(){
- @Override
- public void actionPerformed(ActionEvent e)
- {
- calculate.clear();
- calc.setText(null);
- }
- });
- StyledButton equals = new StyledButton("=");
- equals.addActionListener(new ActionListener(){
- @Override
- public void actionPerformed(ActionEvent e)
- {
- ans();
- }
- });
- funcs.setLayout(new GridLayout(4, 2));
- funcs.add(clear);
- funcs.add(new FuncButton("%", calc));
- funcs.add(new FuncButton("*", calc));
- funcs.add(new FuncButton("÷", calc));
- funcs.add(new FuncButton("√", calc));
- funcs.add(new FuncButton("-", calc));
- funcs.add(new FuncButton("+", calc));
- funcs.add(equals);
- buttons.setLayout(new BorderLayout());
- buttons.add(nums, "West");
- buttons.add(funcs, "East");
- calc.setEditable(false);
- wrapper.add(calc, "North");
- wrapper.add(buttons, "Center");
- this.add(wrapper, "Center");
- this.setVisible(true);
- }
- public static void ans()
- {
- Double cV = Double.parseDouble(calculate.get(0));
- System.out.println("Hi");
- for(int i = 1; i < calculate.size(); i += 2)
- {
- System.out.print(calculate.get(i) + ", " + calculate.get(i + 1) + ", ");
- switch(calculate.get(i))
- {
- case "+":
- cV += Double.parseDouble(calculate.get(i + 1));
- break;
- case "-":
- cV -= Double.parseDouble(calculate.get(i + 1));
- break;
- case "*":
- cV *= Double.parseDouble(calculate.get(i + 1));
- break;
- }
- }
- calc.setText("= " + cV);
- }
- public static void addTo(String toAdd)
- {
- try{
- if(!isNumeric(toAdd))
- {
- if(!isNumeric(calculate.get(calculate.size() - 1)))
- {
- calculate.set(calculate.size() - 1, toAdd);
- }
- }else{
- calculate.add(toAdd);
- }
- }catch(Exception e){ }
- }
- public static boolean isNumeric(String str)
- {
- try{
- Double.parseDouble(str);
- }catch(NumberFormatException nfe){
- return false;
- }
- return true;
- }
- }
- //NumButton.java
- package net.discfiresoftworks.calculator;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import javax.swing.JTextField;
- public class NumButton extends StyledButton
- {
- private static final long serialVersionUID = 1L;
- public NumButton(final JTextField f, final int num)
- {
- super("" + num);
- this.addActionListener(new ActionListener(){
- @Override
- public void actionPerformed(ActionEvent arg0)
- {
- f.setText(f.getText() + num);
- }
- });
- }
- }
- //FuncButton.java
- package net.discfiresoftworks.calculator;
- import java.awt.Color;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import javax.swing.BorderFactory;
- import javax.swing.JButton;
- import javax.swing.JTextField;
- import javax.swing.border.Border;
- public class FuncButton extends JButton
- {
- private static final long serialVersionUID = 1L;
- public FuncButton(final String func, final JTextField f)
- {
- super(func);
- this.setSize(15, 15);
- Border c = null;
- if(!func.equals("-"))
- {
- c = BorderFactory.createCompoundBorder(BorderFactory.createEtchedBorder(), BorderFactory.createLineBorder(Color.WHITE, 6));
- }else{
- c = BorderFactory.createCompoundBorder(BorderFactory.createEtchedBorder(), BorderFactory.createLineBorder(Color.WHITE, 7));
- }
- this.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.white, 1), c));
- this.addActionListener(new ActionListener(){
- @Override
- public void actionPerformed(ActionEvent e)
- {
- Calculator.addTo(func);
- Calculator.addTo(f.getText());
- f.setText(func + " ");
- }
- });
- }
- }
- //StyledButton.java
- package net.discfiresoftworks.calculator;
- import java.awt.Color;
- import javax.swing.BorderFactory;
- import javax.swing.JButton;
- public class StyledButton extends JButton
- {
- private static final long serialVersionUID = 1L;
- public StyledButton(String str)
- {
- super(str);
- this.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEtchedBorder(), BorderFactory.createLineBorder(Color.WHITE, 5)));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment