Guest User

Calculator.

a guest
Jun 7th, 2014
318
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.33 KB | None | 0 0
  1. //Calculator.java
  2.  
  3. package net.discfiresoftworks.calculator;
  4.  
  5. import java.awt.BorderLayout;
  6. import java.awt.Color;
  7. import java.awt.GridLayout;
  8. import java.awt.event.ActionEvent;
  9. import java.awt.event.ActionListener;
  10. import java.util.ArrayList;
  11.  
  12. import javax.swing.BorderFactory;
  13. import javax.swing.BoxLayout;
  14. import javax.swing.JFrame;
  15. import javax.swing.JPanel;
  16. import javax.swing.JTextField;
  17.  
  18. public class Calculator extends JFrame
  19. {
  20.     private static final long serialVersionUID = 1L;
  21.    
  22.     public JPanel wrapper = new JPanel();
  23.     public static JTextField calc = new JTextField();
  24.     public JPanel buttons = new JPanel();
  25.     public JPanel funcs = new JPanel();
  26.     public JPanel nums = new JPanel();
  27.     public JPanel bln1 = new JPanel();
  28.     public JPanel bln2 = new JPanel();
  29.     public JPanel bln3 = new JPanel();
  30.     public JPanel bln4 = new JPanel();
  31.    
  32.     public static ArrayList<String> calculate = new ArrayList<String>();
  33.    
  34.     public static void main(String[] args)
  35.     {
  36.         new Calculator();
  37.     }
  38.    
  39.     public Calculator()
  40.     {
  41.         this.setSize(200, 220);
  42.         this.setResizable(false);
  43.         this.setTitle("Calculator");
  44.         this.setDefaultCloseOperation(3);
  45.         this.setLocationRelativeTo(null);
  46.         this.setLayout(new BorderLayout());
  47.        
  48.         wrapper.setBorder(BorderFactory.createLineBorder(Color.WHITE, 5));
  49.         wrapper.setLayout(new BorderLayout());
  50.        
  51.         calc.setBorder(BorderFactory.createEtchedBorder());
  52.        
  53.         StyledButton point = new StyledButton(".");
  54.         point.addActionListener(new ActionListener(){
  55.             @Override
  56.             public void actionPerformed(ActionEvent e)
  57.             {
  58.                 calc.setText(calc.getText() + ".");
  59.             }
  60.         });
  61.        
  62.         bln1.add(new NumButton(calc, 7));
  63.         bln1.add(new NumButton(calc, 8));
  64.         bln1.add(new NumButton(calc, 9));
  65.        
  66.         bln2.add(new NumButton(calc, 4));
  67.         bln2.add(new NumButton(calc, 5));
  68.         bln2.add(new NumButton(calc, 6));
  69.        
  70.         bln3.add(new NumButton(calc, 1));
  71.         bln3.add(new NumButton(calc, 2));
  72.         bln3.add(new NumButton(calc, 3));
  73.        
  74.         bln4.add(new NumButton(calc, 0));
  75.         bln4.add(point);
  76.        
  77.         nums.setLayout(new BoxLayout(nums, BoxLayout.Y_AXIS));
  78.         nums.add(bln1);
  79.         nums.add(bln2);
  80.         nums.add(bln3);
  81.         nums.add(bln4);
  82.        
  83.         StyledButton clear = new StyledButton("C");
  84.         clear.addActionListener(new ActionListener(){
  85.             @Override
  86.             public void actionPerformed(ActionEvent e)
  87.             {
  88.                 calculate.clear();
  89.                 calc.setText(null);
  90.             }
  91.         });
  92.        
  93.         StyledButton equals = new StyledButton("=");
  94.         equals.addActionListener(new ActionListener(){
  95.             @Override
  96.             public void actionPerformed(ActionEvent e)
  97.             {
  98.                 ans();
  99.             }
  100.         });
  101.        
  102.         funcs.setLayout(new GridLayout(4, 2));
  103.         funcs.add(clear);
  104.         funcs.add(new FuncButton("%", calc));
  105.         funcs.add(new FuncButton("*", calc));
  106.         funcs.add(new FuncButton("÷", calc));
  107.         funcs.add(new FuncButton("√", calc));
  108.         funcs.add(new FuncButton("-", calc));
  109.         funcs.add(new FuncButton("+", calc));
  110.         funcs.add(equals);
  111.        
  112.         buttons.setLayout(new BorderLayout());
  113.         buttons.add(nums, "West");
  114.         buttons.add(funcs, "East");
  115.        
  116.         calc.setEditable(false);
  117.        
  118.         wrapper.add(calc, "North");
  119.         wrapper.add(buttons, "Center");
  120.        
  121.         this.add(wrapper, "Center");
  122.        
  123.         this.setVisible(true);
  124.     }
  125.    
  126.     public static void ans()
  127.     {
  128.         Double cV = Double.parseDouble(calculate.get(0));
  129.        
  130.         System.out.println("Hi");
  131.        
  132.         for(int i = 1; i < calculate.size(); i += 2)
  133.         {
  134.             System.out.print(calculate.get(i) + ", " + calculate.get(i + 1) + ", ");
  135.            
  136.             switch(calculate.get(i))
  137.             {
  138.                 case "+":
  139.                     cV += Double.parseDouble(calculate.get(i + 1));
  140.                     break;
  141.                 case "-":
  142.                     cV -= Double.parseDouble(calculate.get(i + 1));
  143.                     break;
  144.                 case "*":
  145.                     cV *= Double.parseDouble(calculate.get(i + 1));
  146.                     break;
  147.             }
  148.         }
  149.        
  150.         calc.setText("= " + cV);
  151.     }
  152.    
  153.     public static void addTo(String toAdd)
  154.     {
  155.         try{
  156.             if(!isNumeric(toAdd))
  157.             {
  158.                 if(!isNumeric(calculate.get(calculate.size() - 1)))
  159.                 {
  160.                     calculate.set(calculate.size() - 1, toAdd);
  161.                 }
  162.             }else{
  163.                 calculate.add(toAdd);
  164.             }
  165.         }catch(Exception e){ }
  166.     }
  167.    
  168.     public static boolean isNumeric(String str)  
  169.     {  
  170.         try{  
  171.             Double.parseDouble(str);  
  172.         }catch(NumberFormatException nfe){  
  173.             return false;  
  174.         }
  175.         return true;  
  176.     }
  177. }
  178.  
  179.  
  180. //NumButton.java
  181.  
  182. package net.discfiresoftworks.calculator;
  183.  
  184. import java.awt.event.ActionEvent;
  185. import java.awt.event.ActionListener;
  186.  
  187. import javax.swing.JTextField;
  188.  
  189. public class NumButton extends StyledButton
  190. {
  191.     private static final long serialVersionUID = 1L;
  192.    
  193.     public NumButton(final JTextField f, final int num)
  194.     {
  195.         super("" + num);
  196.        
  197.         this.addActionListener(new ActionListener(){
  198.  
  199.             @Override
  200.             public void actionPerformed(ActionEvent arg0)
  201.             {
  202.                 f.setText(f.getText() + num);
  203.             }
  204.            
  205.         });
  206.     }
  207. }
  208.  
  209. //FuncButton.java
  210.  
  211. package net.discfiresoftworks.calculator;
  212.  
  213. import java.awt.Color;
  214. import java.awt.event.ActionEvent;
  215. import java.awt.event.ActionListener;
  216.  
  217. import javax.swing.BorderFactory;
  218. import javax.swing.JButton;
  219. import javax.swing.JTextField;
  220. import javax.swing.border.Border;
  221.  
  222. public class FuncButton extends JButton
  223. {
  224.     private static final long serialVersionUID = 1L;
  225.    
  226.     public FuncButton(final String func, final JTextField f)
  227.     {
  228.         super(func);
  229.        
  230.         this.setSize(15, 15);
  231.        
  232.         Border c = null;
  233.        
  234.         if(!func.equals("-"))
  235.         {
  236.              c = BorderFactory.createCompoundBorder(BorderFactory.createEtchedBorder(), BorderFactory.createLineBorder(Color.WHITE, 6));
  237.         }else{
  238.             c = BorderFactory.createCompoundBorder(BorderFactory.createEtchedBorder(), BorderFactory.createLineBorder(Color.WHITE, 7));
  239.         }
  240.        
  241.         this.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.white, 1), c));
  242.        
  243.         this.addActionListener(new ActionListener(){
  244.  
  245.             @Override
  246.             public void actionPerformed(ActionEvent e)
  247.             {
  248.                 Calculator.addTo(func);
  249.                 Calculator.addTo(f.getText());
  250.                 f.setText(func + " ");
  251.             }
  252.            
  253.         });
  254.     }
  255. }
  256.  
  257. //StyledButton.java
  258.  
  259. package net.discfiresoftworks.calculator;
  260.  
  261. import java.awt.Color;
  262.  
  263. import javax.swing.BorderFactory;
  264. import javax.swing.JButton;
  265.  
  266. public class StyledButton extends JButton
  267. {
  268.     private static final long serialVersionUID = 1L;
  269.  
  270.     public StyledButton(String str)
  271.     {
  272.         super(str);
  273.        
  274.         this.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEtchedBorder(), BorderFactory.createLineBorder(Color.WHITE, 5)));
  275.     }
  276. }
Advertisement
Add Comment
Please, Sign In to add comment