[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 301
  • Last Modified:

Swing error

Hello Experts,

I have a problem with the main method of a swing calculator
It returns :
java.lang.IllegalArgumentException: adding container's parent to itself
      at java.awt.Container.addImpl(Container.java:1005)
      at java.awt.Container.add(Container.java:928)
      at javax.swing.JFrame.addImpl(JFrame.java:480)
      at java.awt.Container.add(Container.java:351)
      at Calculator.main(Calculator.java:29)
java.lang.IllegalArgumentException: adding container's parent to itself
      at java.awt.Container.addImpl(Container.java:1005)
      at java.awt.Container.add(Container.java:928)
      at javax.swing.JFrame.addImpl(JFrame.java:480)
      at java.awt.Container.add(Container.java:351)
      at Calculator.main(Calculator.java:29)
java.lang.IllegalArgumentException: adding container's parent to itself
      at java.awt.Container.addImpl(Container.java:1005)
      at java.awt.Container.add(Container.java:928)
      at javax.swing.JFrame.addImpl(JFrame.java:480)
      at java.awt.Container.add(Container.java:351)
      at Calculator.main(Calculator.java:29)


Can you give a look to it and tell me how to fix it  ???

Thanks in advance!
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.*;
 
public class Calculator extends JFrame implements ActionListener 
{
    public static final int Width = 500;
    public static final int Height = 500;
    
    private TextField Board;
    private JButton jbo0, jbo1, jbo2, jbo3, jbo4, jbo5, jbo6, jbo7, jbo8, jbo9, 
                    jboAddition, jboSubtraction, jboMultiplication, jboDivision,
                    jboDot, jboLp, jboRp, jboClear, jboResult; 
                   
                    
    public static void main(String args[])
  {
    JFrame applet = new Calculator();
    JFrame frame = new JFrame();
    frame.add(frame);
    frame.setSize(Width,Height);
    frame.show();
  }
    public void Calc()
    {
  
        //Numbers
        
        JButton jbo0 = new JButton("0");
        jbo0.addActionListener(this);
        jbo1 = new JButton("1");
        add(jbo1);
        jbo1.addActionListener(this);
        jbo2 = new JButton("2");
        add(jbo2);
        jbo2.addActionListener(this);
        jbo3 = new JButton("3");
        add(jbo3);
        jbo3.addActionListener(this);
        jbo4 = new JButton("4");
        add(jbo4);
        jbo4.addActionListener(this);
        jbo5 = new JButton("5");
        add(jbo5);
        jbo5.addActionListener(this);
        jbo6 = new JButton("6");
        add(jbo6);
        jbo6.addActionListener(this);
        jbo7 = new JButton("7");
        add(jbo7);
        jbo7.addActionListener(this);
        jbo8 = new JButton("8");
        add(jbo8);
        jbo8.addActionListener(this);
        jbo9 = new JButton("9");
        add(jbo9);
        jbo9.addActionListener(this);
        
        //Math Operations
        
        jboAddition = new JButton("+");
        add(jboAddition);
        jboAddition.addActionListener(this);
        jboSubtraction = new JButton("-");
        add(jboSubtraction);
        jboSubtraction.addActionListener(this);
        jboMultiplication = new JButton("*");
        add(jboMultiplication);
        jboMultiplication.addActionListener(this);
        jboDivision = new JButton("/");
        add(jboDivision);
        jboDivision.addActionListener(this);
        
        //Result etc..
        
        jboDot = new JButton(".");
        add(jboDot);
        jboDot.addActionListener(this);
        jboLp = new JButton("(");
        add(jboLp);
        jboLp.addActionListener(this);
        jboRp = new JButton(")");
        add(jboRp);
        jboRp.addActionListener(this);
        jboClear = new JButton("C");
        add(jboClear);
        jboClear.addActionListener(this);
        jboResult = new JButton("=");
        add(jboResult);
        jboResult.addActionListener(this);
        
    }
    
    public void actionPerformed(ActionEvent e)
    {
        if (e.getSource() instanceof JButton)
        {
            JButton buClicked = (JButton) e.getSource();
            if (buClicked == jboClear) boardClear();
            else if (buClicked == jboResult) Calculate();
        }
        else
        {
            Calculate();
        }
    }
    
    public void UserInput(JButton buClicked)
    {
        String input;
        input = Board.getText();
        if (buClicked == jbo0)
        {
            Board.setText(input + "0");
        }
        if (buClicked == jbo1)
        {
            Board.setText(input + "1");
        }
        if (buClicked == jbo2)
        {
            Board.setText(input + "2");
        }
        if (buClicked == jbo3)
        {
            Board.setText(input + "3");
        }
        if (buClicked == jbo4)
        {
            Board.setText(input + "4");
        }
        if (buClicked == jbo5)
        {
            Board.setText(input + "5");
        }
        if (buClicked == jbo6)
        {
            Board.setText(input + "6");
        }
        if (buClicked == jbo7)
        {
            Board.setText(input + "7");
        }
        if (buClicked == jbo8)
        {
            Board.setText(input + "8");
        }
        if (buClicked == jbo9)
        {
            Board.setText(input + "9");
        }
        if (buClicked == jboAddition)
        {
            Board.setText(input + "+");
        }
        if (buClicked == jboSubtraction)
        {
            Board.setText(input + "-");
        }
        if (buClicked == jboMultiplication)
        {
            Board.setText(input + "*");
        }
        if (buClicked == jboDivision)
        {
            Board.setText(input + "/");
        }
        if (buClicked == jboDot)
        {
            Board.setText(input + ".");
        }
        if (buClicked == jboLp)
        {
            Board.setText(input + "(");
        }
        if (buClicked == jboRp)
        {
            Board.setText(input + ")");
        }
    }
    
     private void boardClear()
    {
        Board.setText("");
    }
    
    public void Calculate()
    {
        int counter;
        int numParenthesis = 0;
        int lenInput;
        String calc;
        String Answer = "";
        char NumOther;
        
        calc = Board.getText();
        lenInput = calc.length();
        
        for (counter = 0; counter < lenInput; counter++)
        {
            NumOther = calc.charAt(counter);
            if (NumOther == ')')
            {
                numParenthesis--;
            }
            if (NumOther == '(')
            {
                numParenthesis++;
            }
            if ((NumOther < '(') || (NumOther > '9') || (NumOther == '.'))
            {
                Board.setText("Error");
            }
            if (NumOther == '.' && (counter + 1 < calc.length()))
            {
                for (int k = counter + 1; (k < calc.length()) && ((Character.isDigit(calc.charAt(k))) || ((calc.charAt(k))) == '.'); k++)
                {
                    if (calc.charAt(k) == '.')
                    {
                        Board.setText("Error");
                    }
                }
            }
        }
        if (numParenthesis != 0)
        {
            Board.setText("Error");
        }
        else
        {
            Answer = Calculate2(calc);
            Board.setText(Answer);
        }
    }
 
        
    private String CalculatorImp(String oper1, String oper2, char Oper)
    {
        Double op1, op2;
        double ops1, ops2;
        double ans = 0;
        String result;
        
        op1 = new Double (oper1);
        op2 = new Double (oper2);
        ops1 = op1.doubleValue();
        ops2 = op2.doubleValue();
        
        if (Oper == '+')
        {
            ans = ops1 + ops2;
        }
        if (Oper == '-')
        {
            ans = ops1 - ops2;
        }
        if (Oper == '*')
        {
            ans = ops1 * ops2 ;
        }
        if (Oper == '/')
        {
            ans = ops1/ops2;
        }
        
        result = Double.toString(ans);
        return result;
    }
 
        
    
    private String Calculate2(String process)
    {
        String answer = process;
        String op1 = "";
        String op2 = "";
        char userinput;
        int index = 0;
        int indexL = 0;
        int indexR = 0;
        int numInput = answer.length();
        int numPar = 0;
        int matchPar = 0;
        int indexOp1 = 0;
        int indexOp2 = 0;
        
        if (answer  != "Error")
        {
            for (index = 0; index < numInput; index++)
            {
                userinput = answer.charAt(index);
                
                if (userinput  == '(')
                {
                    if (matchPar == 0)
                    {
                        indexOp1 = index;
                    }
                    matchPar++;
                    numPar++;
                }
                if (userinput == ')')
                {
                    matchPar--;
                    if (matchPar ==0)
                    {
                        indexOp2 = index;
                    }
                }
            }
            if (indexOp1 + 1 == indexOp2)
            {
                Board.setText("Error");
            }
            if (answer == "Error"  && numPar > 0)
            {
                if (indexOp1 == 0)
                {
                    if (indexOp2 == (numInput - 1))
                    {
                        if (indexOp1 != indexOp2)
                        {
                            answer = Calculate2(answer.substring(indexOp1 + 1, indexOp2));
                        }
                    }
                }
                else if (indexOp1 == 0 && indexOp2 > 0)
                {
                    if ((Character.isDigit(answer.charAt(indexOp2 + 1))))
                    {
                        Board.setText("Error");
                    }
                    else
                    {
                        answer = Calculate2(answer.substring(indexOp1 + 1, indexOp2)) + answer.substring(indexOp2 + 1);
                        numPar--;
                        while (numPar != 0)
                        {
                            answer = Calculate2(answer);
                            numPar--;
                        }
                    }
                }
                else if ((indexOp1 > 0) && (indexOp2 > 0) && (indexOp2 != numInput - 1))
                {
                    if (((Character.isDigit(answer.charAt(indexOp2 + 1 ))) ||  (Character.isDigit(answer.charAt(indexOp1 - 1 ))) ))
                    {
                        Board.setText("Error");
                    }
                    else
                    {
                        answer = answer.substring(0, indexOp1) + Calculate2(answer.substring(indexOp1 + 1, indexOp2)) + answer.substring(indexOp2 + 1);
                        numPar--;
                        while (numPar != 0)
                        {
                            answer = Calculate2(answer);
                            numPar--;
                        }
                    }
                }
                else if (indexOp2 == numInput - 1 && indexOp1 > 0)
                {
                    if (((Character.isDigit(answer.charAt(indexOp1 - 1)))))
                    {
                        Board.setText("Error");
                    }
                    else
                    {
                        answer = answer.substring(0, indexOp1) + Calculate2(answer.substring(indexOp1 + 1, indexOp2));
                        numPar--;
                        while (numPar != 0)
                        {
                            answer = Calculate2(answer);
                            numPar--;
                        }
                    }
                }
            }
            if (numPar == 0)
            {
                if (answer != "Error")
                {
                    if (!(Character.isDigit(answer.charAt(0))))
                    {
                        if (answer.charAt(0) != '-')
                        {
                            if (!(Character.isDigit(answer.charAt(answer.length() - 1))))
                            {
                                Board.setText("Error");
                            }
                        }
                    }
                }
            }
            
            for (index = 0; index < answer.length() && (answer == "Error"); index++)
            {
                userinput = answer.charAt(index);
                
                if (userinput == '*' || userinput == '/')
                {
                    if (!(Character.isDigit(answer.charAt(index-1))) || (!(Character.isDigit(answer.charAt(index + 1)))))
                    {
                        if (answer.charAt(index + 1) != '-')
                        {
                            Board.setText("Error");
                        }
                    }
                    if (answer.charAt(index + 1) == '-')
                    {
                        if (!(Character.isDigit(answer.charAt(index + 2))))
                        {
                            Board.setText("Error");
                        }
                    }
                    if (answer == "Error")
                    {
                        indexL = index - 1;
                        
                        if (indexL > 2)
                        {
                            if ((answer.charAt(indexL - 1)) == '-')
                            {
                                if ((answer.charAt(indexL - 2)) == 'E')
                                {
                                    indexL = indexL -2;
                                }
                            }
                        }
                            while ((indexL  > 0) && ((Character.isDigit(answer.charAt(indexL - 2)) || ((answer.charAt(indexL - 1)) == '.') || ((answer.charAt(indexL - 1)) == 'E' ))))
                            {
                                indexL--;
                            }
                            if (indexL == 1)
                            {
                                if ((answer.charAt(indexL - 1)) == '-')
                                {
                                    indexL--;
                                }
                            }
                            if (indexL > 2)
                            {
                                if (((answer.charAt(indexL - 1)) == '-') && !(Character.isDigit(answer.charAt(indexL - 2))))
                                    {
                                        indexL--;
                                    }
                            }
                            op2 = answer.substring(index + 1, indexR + 1);
                          
                            }
                        }
                    }
                }
                
                
                for (index = 0; index < answer.length() && (answer != "Error"); index++)
                {
                    if (index == 0)
                    {
                        index = 1;
                    }
                }
                if (index > 0)
                {
                   
                        if (answer.charAt(index + 1) == '-')
                        {
                            index = index + 2;
                        }
                   
                }
                
                userinput = answer.charAt(index);
                
                if ((userinput == '+') || (userinput == '-'))
                {
                    if (!(Character.isDigit(answer.charAt(index - 1))))
                    {
                        Board.setText("Error");
                    }
                    if (!(Character.isDigit(answer.charAt(index + 1))))
                    {
                        Board.setText("Error");
                    }
                    if ((answer.charAt(index+1) == '-') && (!(Character.isDigit(answer.charAt(index+2)))))
                    {
                        Board.setText("Error");
                    }
                    if (answer != "Error")
                    {
                        indexL = 0;
                        op1 = answer.substring(indexL , index);
                        indexR = index + 1;
                        while((indexR < answer.length()-1) && ((Character.isDigit(answer.charAt(indexR + 1))) || ((answer.charAt(indexR + 1)) == '.') || ((answer.charAt(indexR + 1)) == 'E')))
                        {
                            indexR++;
                            if (indexR < answer.length() - 2)
                            {
                               
                                    if ((answer.charAt(indexR + 1)) == '-')
                                    {
                                        indexR++;
                                    }
                              
                            }
                        }
                        op2 = answer.substring(index + 1, indexR + 1);
                        answer = CalculatorImp(op1, op2, userinput ) + answer.substring(indexR + 1);
                        index = 0;
                    }
                }
            
        
        return answer;
    }
 
}

Open in new window

0
perdoname_
Asked:
perdoname_
1 Solution
 
ksivananthCommented:
try this,

public static void main(String args[])
  {
    JFrame applet = new Calculator();
    applet.setSize(Width,Height);
    applet.show();
  }
0
 
ramiseesniblicCommented:
frame.add(frame)

Adding to itself
0
 
ramiseesniblicCommented:
There are multiple errors in the code.

Are you using an IDE to write it?
0
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 
Ryan_KemptCommented:
The problem exists on line 29 where you try to add frame to frame.

frame.add(frame);

I would change quite a bit structurally (like adding a panel that you've imported but never decided to use!);

JFrame outputFrame = new JFrame();
Container outputPane = outputFrame.getContentPane();
outputFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
outputFrame.setSize(Width, Height);
outputPane.setLayout(new GridLayout (3, 3));

Panel panel1 = new Panel();
outputPane.add(panel1);

//panel1.add(allyourstuff);
//panel1.add(moreofyourstuff);

outputFrame.setVisible(true);
0
 
perdoname_Author Commented:
Oh thanks!
but when im trying to add a button to panel it returns an error : "non static variable jbo0 cannot be referenced from a static context".

panel1.add(jbo0);

 public static void main(String args[])
  {
    JFrame outputFrame = new JFrame();
    Container outputPane = outputFrame.getContentPane();
    outputFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    outputFrame.setSize(Width, Height);
    outputPane.setLayout(new GridLayout (3, 3));

    Panel panel1 = new Panel();
    outputPane.add(panel1);
    panel1.add(jbo0);

//panel1.add(allyourstuff);
//panel1.add(moreofyourstuff);

outputFrame.setVisible(true);
  }


Can you tell me why's that happening ? / How can this be solved ?

Thanks in advance!!
0
 
ramiseesniblicCommented:
It is becuase you are trying to add it in the static main method.

You really need to add the buttons in the objects constructor.
0
 
ramiseesniblicCommented:
Try changing the method "public void Calc()" to "public Calculator()"
0
 
ramiseesniblicCommented:
Therefore:


public static void main(String args[]) {
		JFrame outputFrame = new Calculator();
		outputFrame.setVisible(true);
	}
 
	public Calculator() {
 
		Container outputPane = this.getContentPane();
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setSize(Width, Height);
		outputPane.setLayout(new GridLayout(3, 3));
 
		Panel panel1 = new Panel();
		outputPane.add(panel1);
 
		// Numbers
		setLayout(new FlowLayout());
		JButton jbo0 = new JButton("0");
		jbo0.addActionListener(this);
		add(jbo0);
		jbo1 = new JButton("1");
		add(jbo1);
		jbo1.addActionListener(this);
		jbo2 = new JButton("2");
		add(jbo2);
		jbo2.addActionListener(this);
		jbo3 = new JButton("3");
		add(jbo3);
		jbo3.addActionListener(this);
		jbo4 = new JButton("4");
		add(jbo4);
		jbo4.addActionListener(this);
		jbo5 = new JButton("5");
		add(jbo5);
		jbo5.addActionListener(this);
		jbo6 = new JButton("6");
		add(jbo6);
		jbo6.addActionListener(this);
		jbo7 = new JButton("7");
		add(jbo7);
		jbo7.addActionListener(this);
		jbo8 = new JButton("8");
		add(jbo8);
		jbo8.addActionListener(this);
		jbo9 = new JButton("9");
		add(jbo9);
		jbo9.addActionListener(this);
 
		// Math Operations
 
		jboAddition = new JButton("+");
		add(jboAddition);
		jboAddition.addActionListener(this);
		jboSubtraction = new JButton("-");
		add(jboSubtraction);
		jboSubtraction.addActionListener(this);
		jboMultiplication = new JButton("*");
		add(jboMultiplication);
		jboMultiplication.addActionListener(this);
		jboDivision = new JButton("/");
		add(jboDivision);
		jboDivision.addActionListener(this);
 
		// Result etc..
 
		jboDot = new JButton(".");
		add(jboDot);
		jboDot.addActionListener(this);
		jboLp = new JButton("(");
		add(jboLp);
		jboLp.addActionListener(this);
		jboRp = new JButton(")");
		add(jboRp);
		jboRp.addActionListener(this);
		jboClear = new JButton("C");
		add(jboClear);
		jboClear.addActionListener(this);
		jboResult = new JButton("=");
		add(jboResult);
		jboResult.addActionListener(this);
 
	}

Open in new window

0
 
ramiseesniblicCommented:
Mistake in above....

Prefix occurances of  "add" with "outputPane."  
e.g. outputPane.add(jbo0);

sorry
0
 
perdoname_Author Commented:
thanks but now i get an error : cannot find symbol variable outputFrame
on that line : "        Container outputPane = outputFrame.getContentPane();"

Why's that happening ?
0
 
ramiseesniblicCommented:
Sorry..  Having bad day.

Container outputPane = this.getContentPane();

Open in new window

0
 
perdoname_Author Commented:
Thanks!
But why do i get an empty window instead of a calculator? [ i mean after running the main method]

Thanks in advance!

import java.awt.*;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.*;

public class Calculator extends JFrame implements ActionListener
{
    public static final int Width = 500;
    public static final int Height = 500;
   
    private TextField Board;
    private JButton jbo0, jbo1, jbo2, jbo3, jbo4, jbo5, jbo6, jbo7, jbo8, jbo9,
                    jboAddition, jboSubtraction, jboMultiplication, jboDivision,
                    jboDot, jboLp, jboRp, jboClear, jboResult;
                   
   /*                
    public static void main(String args[])
  {
    JFrame applet = new Calculator();
    JFrame frame = new JFrame();
    frame.add(frame);
    frame.setSize(Width,Height);
    frame.show();
  }
  */
 
 public static void main(String args[])
  {
    JFrame outputFrame = new Calculator();
   

//panel1.add(allyourstuff);
//panel1.add(moreofyourstuff);

    outputFrame.setVisible(true);
  }
    public void Calculator()
    {
        Container outputPane = this.getContentPane();
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(Width, Height);
        outputPane.setLayout(new GridLayout (3, 3));

        Panel panel1 = new Panel();

        //panel1.add(jbo0);
 
        //Numbers
        setLayout(new FlowLayout());
        setFont(new Font("Helvetica", Font.PLAIN, 8));

        JButton jbo0 = new JButton("0");
        jbo0.addActionListener(this);
        outputPane.add(jbo0);
        jbo1 = new JButton("1");
        outputPane.add(jbo1);
        jbo1.addActionListener(this);
        jbo2 = new JButton("2");
        outputPane.add(jbo2);
        jbo2.addActionListener(this);
        jbo3 = new JButton("3");
        outputPane.add(jbo3);
        jbo3.addActionListener(this);
        jbo4 = new JButton("4");
        outputPane.add(jbo4);
        jbo4.addActionListener(this);
        jbo5 = new JButton("5");
        outputPane.add(jbo5);
        jbo5.addActionListener(this);
        jbo6 = new JButton("6");
        outputPane.add(jbo6);
        jbo6.addActionListener(this);
        jbo7 = new JButton("7");
        outputPane.add(jbo7);
        jbo7.addActionListener(this);
        jbo8 = new JButton("8");
        outputPane.add(jbo8);
        jbo8.addActionListener(this);
        jbo9 = new JButton("9");
        outputPane.add(jbo9);
        jbo9.addActionListener(this);
       
        //Math Operations
       
        jboAddition = new JButton("+");
        outputPane.add(jboAddition);
        jboAddition.addActionListener(this);
        jboSubtraction = new JButton("-");
        outputPane.add(jboSubtraction);
        jboSubtraction.addActionListener(this);
        jboMultiplication = new JButton("*");
        outputPane.add(jboMultiplication);
        jboMultiplication.addActionListener(this);
        jboDivision = new JButton("/");
        outputPane.add(jboDivision);
        jboDivision.addActionListener(this);
       
        //Result etc..
       
        jboDot = new JButton(".");
        outputPane.add(jboDot);
        jboDot.addActionListener(this);
        jboLp = new JButton("(");
        outputPane.add(jboLp);
        jboLp.addActionListener(this);
        jboRp = new JButton(")");
        outputPane.add(jboRp);
        jboRp.addActionListener(this);
        jboClear = new JButton("C");
        outputPane.add(jboClear);
        jboClear.addActionListener(this);
        jboResult = new JButton("=");
        outputPane.add(jboResult);
        jboResult.addActionListener(this);
       
    }
   
    public void actionPerformed(ActionEvent e)
    {
        if (e.getSource() instanceof JButton)
        {
            JButton buClicked = (JButton) e.getSource();
            if (buClicked == jboClear) boardClear();
            else if (buClicked == jboResult) Calculate();
        }
        else
        {
            Calculate();
        }
    }
   
    public void UserInput(JButton buClicked)
    {
        String input;
        input = Board.getText();
        if (buClicked == jbo0)
        {
            Board.setText(input + "0");
        }
        if (buClicked == jbo1)
        {
            Board.setText(input + "1");
        }
        if (buClicked == jbo2)
        {
            Board.setText(input + "2");
        }
        if (buClicked == jbo3)
        {
            Board.setText(input + "3");
        }
        if (buClicked == jbo4)
        {
            Board.setText(input + "4");
        }
        if (buClicked == jbo5)
        {
            Board.setText(input + "5");
        }
        if (buClicked == jbo6)
        {
            Board.setText(input + "6");
        }
        if (buClicked == jbo7)
        {
            Board.setText(input + "7");
        }
        if (buClicked == jbo8)
        {
            Board.setText(input + "8");
        }
        if (buClicked == jbo9)
        {
            Board.setText(input + "9");
        }
        if (buClicked == jboAddition)
        {
            Board.setText(input + "+");
        }
        if (buClicked == jboSubtraction)
        {
            Board.setText(input + "-");
        }
        if (buClicked == jboMultiplication)
        {
            Board.setText(input + "*");
        }
        if (buClicked == jboDivision)
        {
            Board.setText(input + "/");
        }
        if (buClicked == jboDot)
        {
            Board.setText(input + ".");
        }
        if (buClicked == jboLp)
        {
            Board.setText(input + "(");
        }
        if (buClicked == jboRp)
        {
            Board.setText(input + ")");
        }
    }
   
     private void boardClear()
    {
        Board.setText("");
    }
   
    public void Calculate()
    {
        int counter;
        int numParenthesis = 0;
        int lenInput;
        String calc;
        String Answer = "";
        char NumOther;
       
        calc = Board.getText();
        lenInput = calc.length();
       
        for (counter = 0; counter < lenInput; counter++)
        {
            NumOther = calc.charAt(counter);
            if (NumOther == ')')
            {
                numParenthesis--;
            }
            if (NumOther == '(')
            {
                numParenthesis++;
            }
            if ((NumOther < '(') || (NumOther > '9') || (NumOther == '.'))
            {
                Board.setText("Error");
            }
            if (NumOther == '.' && (counter + 1 < calc.length()))
            {
                for (int k = counter + 1; (k < calc.length()) && ((Character.isDigit(calc.charAt(k))) || ((calc.charAt(k))) == '.'); k++)
                {
                    if (calc.charAt(k) == '.')
                    {
                        Board.setText("Error");
                    }
                }
            }
        }
        if (numParenthesis != 0)
        {
            Board.setText("Error");
        }
        else
        {
            Answer = Calculate2(calc);
            Board.setText(Answer);
        }
    }

       
    private String CalculatorImp(String oper1, String oper2, char Oper)
    {
        Double op1, op2;
        double ops1, ops2;
        double ans = 0;
        String result;
       
        op1 = new Double (oper1);
        op2 = new Double (oper2);
        ops1 = op1.doubleValue();
        ops2 = op2.doubleValue();
       
        if (Oper == '+')
        {
            ans = ops1 + ops2;
        }
        if (Oper == '-')
        {
            ans = ops1 - ops2;
        }
        if (Oper == '*')
        {
            ans = ops1 * ops2 ;
        }
        if (Oper == '/')
        {
            ans = ops1/ops2;
        }
       
        result = Double.toString(ans);
        return result;
    }

       
   
    private String Calculate2(String process)
    {
        String answer = process;
        String op1 = "";
        String op2 = "";
        char userinput;
        int index = 0;
        int indexL = 0;
        int indexR = 0;
        int numInput = answer.length();
        int numPar = 0;
        int matchPar = 0;
        int indexOp1 = 0;
        int indexOp2 = 0;
       
        if (answer  != "Error")
        {
            for (index = 0; index < numInput; index++)
            {
                userinput = answer.charAt(index);
               
                if (userinput  == '(')
                {
                    if (matchPar == 0)
                    {
                        indexOp1 = index;
                    }
                    matchPar++;
                    numPar++;
                }
                if (userinput == ')')
                {
                    matchPar--;
                    if (matchPar ==0)
                    {
                        indexOp2 = index;
                    }
                }
            }
            if (indexOp1 + 1 == indexOp2)
            {
                Board.setText("Error");
            }
            if (answer == "Error"  && numPar > 0)
            {
                if (indexOp1 == 0)
                {
                    if (indexOp2 == (numInput - 1))
                    {
                        if (indexOp1 != indexOp2)
                        {
                            answer = Calculate2(answer.substring(indexOp1 + 1, indexOp2));
                        }
                    }
                }
                else if (indexOp1 == 0 && indexOp2 > 0)
                {
                    if ((Character.isDigit(answer.charAt(indexOp2 + 1))))
                    {
                        Board.setText("Error");
                    }
                    else
                    {
                        answer = Calculate2(answer.substring(indexOp1 + 1, indexOp2)) + answer.substring(indexOp2 + 1);
                        numPar--;
                        while (numPar != 0)
                        {
                            answer = Calculate2(answer);
                            numPar--;
                        }
                    }
                }
                else if ((indexOp1 > 0) && (indexOp2 > 0) && (indexOp2 != numInput - 1))
                {
                    if (((Character.isDigit(answer.charAt(indexOp2 + 1 ))) ||  (Character.isDigit(answer.charAt(indexOp1 - 1 ))) ))
                    {
                        Board.setText("Error");
                    }
                    else
                    {
                        answer = answer.substring(0, indexOp1) + Calculate2(answer.substring(indexOp1 + 1, indexOp2)) + answer.substring(indexOp2 + 1);
                        numPar--;
                        while (numPar != 0)
                        {
                            answer = Calculate2(answer);
                            numPar--;
                        }
                    }
                }
                else if (indexOp2 == numInput - 1 && indexOp1 > 0)
                {
                    if (((Character.isDigit(answer.charAt(indexOp1 - 1)))))
                    {
                        Board.setText("Error");
                    }
                    else
                    {
                        answer = answer.substring(0, indexOp1) + Calculate2(answer.substring(indexOp1 + 1, indexOp2));
                        numPar--;
                        while (numPar != 0)
                        {
                            answer = Calculate2(answer);
                            numPar--;
                        }
                    }
                }
            }
            if (numPar == 0)
            {
                if (answer != "Error")
                {
                    if (!(Character.isDigit(answer.charAt(0))))
                    {
                        if (answer.charAt(0) != '-')
                        {
                            if (!(Character.isDigit(answer.charAt(answer.length() - 1))))
                            {
                                Board.setText("Error");
                            }
                        }
                    }
                }
            }
           
            for (index = 0; index < answer.length() && (answer == "Error"); index++)
            {
                userinput = answer.charAt(index);
               
                if (userinput == '*' || userinput == '/')
                {
                    if (!(Character.isDigit(answer.charAt(index-1))) || (!(Character.isDigit(answer.charAt(index + 1)))))
                    {
                        if (answer.charAt(index + 1) != '-')
                        {
                            Board.setText("Error");
                        }
                    }
                    if (answer.charAt(index + 1) == '-')
                    {
                        if (!(Character.isDigit(answer.charAt(index + 2))))
                        {
                            Board.setText("Error");
                        }
                    }
                    if (answer == "Error")
                    {
                        indexL = index - 1;
                       
                        if (indexL > 2)
                        {
                            if ((answer.charAt(indexL - 1)) == '-')
                            {
                                if ((answer.charAt(indexL - 2)) == 'E')
                                {
                                    indexL = indexL -2;
                                }
                            }
                        }
                            while ((indexL  > 0) && ((Character.isDigit(answer.charAt(indexL - 2)) || ((answer.charAt(indexL - 1)) == '.') || ((answer.charAt(indexL - 1)) == 'E' ))))
                            {
                                indexL--;
                            }
                            if (indexL == 1)
                            {
                                if ((answer.charAt(indexL - 1)) == '-')
                                {
                                    indexL--;
                                }
                            }
                            if (indexL > 2)
                            {
                                if (((answer.charAt(indexL - 1)) == '-') && !(Character.isDigit(answer.charAt(indexL - 2))))
                                    {
                                        indexL--;
                                    }
                            }
                            op2 = answer.substring(index + 1, indexR + 1);
                         
                            }
                        }
                    }
                }
               
               
                for (index = 0; index < answer.length() && (answer != "Error"); index++)
                {
                    if (index == 0)
                    {
                        index = 1;
                    }
                }
                if (index > 0)
                {
                   
                        if (answer.charAt(index + 1) == '-')
                        {
                            index = index + 2;
                        }
                   
                }
               
                userinput = answer.charAt(index);
               
                if ((userinput == '+') || (userinput == '-'))
                {
                    if (!(Character.isDigit(answer.charAt(index - 1))))
                    {
                        Board.setText("Error");
                    }
                    if (!(Character.isDigit(answer.charAt(index + 1))))
                    {
                        Board.setText("Error");
                    }
                    if ((answer.charAt(index+1) == '-') && (!(Character.isDigit(answer.charAt(index+2)))))
                    {
                         Board.setText("Error");
                    }
                    if (answer != "Error")
                    {
                        indexL = 0;
                        op1 = answer.substring(indexL , index);
                        indexR = index + 1;
                        while((indexR < answer.length()-1) && ((Character.isDigit(answer.charAt(indexR + 1))) || ((answer.charAt(indexR + 1)) == '.') || ((answer.charAt(indexR + 1)) == 'E')))
                        {
                            indexR++;
                            if (indexR < answer.length() - 2)
                            {
                               
                                    if ((answer.charAt(indexR + 1)) == '-')
                                    {
                                        indexR++;
                                    }
                             
                            }
                        }
                        op2 = answer.substring(index + 1, indexR + 1);
                        answer = CalculatorImp(op1, op2, userinput ) + answer.substring(indexR + 1);
                        index = 0;
                    }
                }
           
       
        return answer;
    }

}
0
 
ramiseesniblicCommented:
Add:

outputPane.add(panel1);

under:

Panel panel1 = new Panel();


This will add the new panel to the content pane.
0
 
ramiseesniblicCommented:
Ignore me on that one...
0
 
ramiseesniblicCommented:
Take the void modifier out of the Calculator()

That is the constructor.

0
 
ramiseesniblicCommented:
Can you also add the following line into the contructor:
this.setDefaultCloseOperation( EXIT_ON_CLOSE );

Open in new window

0
 
perdoname_Author Commented:
Up to now i can see just the buttons
I mean i cant see the the input line of the calculator :S


import java.awt.*;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.*;

public class Calculator extends JFrame implements ActionListener
{
    public static final int Width = 500;
    public static final int Height = 500;
   
    private TextField Board;
    private JButton jbo0, jbo1, jbo2, jbo3, jbo4, jbo5, jbo6, jbo7, jbo8, jbo9,
                    jboAddition, jboSubtraction, jboMultiplication, jboDivision,
                    jboDot, jboLp, jboRp, jboClear, jboResult;
                   
   /*                
    public static void main(String args[])
  {
    JFrame applet = new Calculator();
    JFrame frame = new JFrame();
    frame.add(frame);
    frame.setSize(Width,Height);
    frame.show();
  }
  */
 
 public static void main(String args[])
  {
    JFrame outputFrame = new Calculator();
   

//panel1.add(allyourstuff);
//panel1.add(moreofyourstuff);

    outputFrame.setVisible(true);
  }
    public Calculator()
    {
        Container outputPane = this.getContentPane();
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(Width, Height);
        outputPane.setLayout(new GridLayout (3, 3));

        Panel panel1 = new Panel();
        this.setDefaultCloseOperation( EXIT_ON_CLOSE );

       // outputPane.add(panel1);

        //panel1.add(jbo0);
 
        //Numbers
        setLayout(new FlowLayout());
        setFont(new Font("Helvetica", Font.PLAIN, 8));

        JButton jbo0 = new JButton("0");
        jbo0.addActionListener(this);
        outputPane.add(jbo0);
        jbo1 = new JButton("1");
        outputPane.add(jbo1);
        jbo1.addActionListener(this);
        jbo2 = new JButton("2");
        outputPane.add(jbo2);
        jbo2.addActionListener(this);
        jbo3 = new JButton("3");
        outputPane.add(jbo3);
        jbo3.addActionListener(this);
        jbo4 = new JButton("4");
        outputPane.add(jbo4);
        jbo4.addActionListener(this);
        jbo5 = new JButton("5");
        outputPane.add(jbo5);
        jbo5.addActionListener(this);
        jbo6 = new JButton("6");
        outputPane.add(jbo6);
        jbo6.addActionListener(this);
        jbo7 = new JButton("7");
        outputPane.add(jbo7);
        jbo7.addActionListener(this);
        jbo8 = new JButton("8");
        outputPane.add(jbo8);
        jbo8.addActionListener(this);
        jbo9 = new JButton("9");
        outputPane.add(jbo9);
        jbo9.addActionListener(this);
       
        //Math Operations
       
        jboAddition = new JButton("+");
        outputPane.add(jboAddition);
        jboAddition.addActionListener(this);
        jboSubtraction = new JButton("-");
        outputPane.add(jboSubtraction);
        jboSubtraction.addActionListener(this);
        jboMultiplication = new JButton("*");
        outputPane.add(jboMultiplication);
        jboMultiplication.addActionListener(this);
        jboDivision = new JButton("/");
        outputPane.add(jboDivision);
        jboDivision.addActionListener(this);
       
        //Result etc..
       
        jboDot = new JButton(".");
        outputPane.add(jboDot);
        jboDot.addActionListener(this);
        jboLp = new JButton("(");
        outputPane.add(jboLp);
        jboLp.addActionListener(this);
        jboRp = new JButton(")");
        outputPane.add(jboRp);
        jboRp.addActionListener(this);
        jboClear = new JButton("C");
        outputPane.add(jboClear);
        jboClear.addActionListener(this);
        jboResult = new JButton("=");
        outputPane.add(jboResult);
        jboResult.addActionListener(this);
       
    }
   
    public void actionPerformed(ActionEvent e)
    {
        if (e.getSource() instanceof JButton)
        {
            JButton buClicked = (JButton) e.getSource();
            if (buClicked == jboClear) boardClear();
            else if (buClicked == jboResult) Calculate();
        }
        else
        {
            Calculate();
        }
    }
   
    public void UserInput(JButton buClicked)
    {
        String input;
        input = Board.getText();
        if (buClicked == jbo0)
        {
            Board.setText(input + "0");
        }
        if (buClicked == jbo1)
        {
            Board.setText(input + "1");
        }
        if (buClicked == jbo2)
        {
            Board.setText(input + "2");
        }
        if (buClicked == jbo3)
        {
            Board.setText(input + "3");
        }
        if (buClicked == jbo4)
        {
            Board.setText(input + "4");
        }
        if (buClicked == jbo5)
        {
            Board.setText(input + "5");
        }
        if (buClicked == jbo6)
        {
            Board.setText(input + "6");
        }
        if (buClicked == jbo7)
        {
            Board.setText(input + "7");
        }
        if (buClicked == jbo8)
        {
            Board.setText(input + "8");
        }
        if (buClicked == jbo9)
        {
            Board.setText(input + "9");
        }
        if (buClicked == jboAddition)
        {
            Board.setText(input + "+");
        }
        if (buClicked == jboSubtraction)
        {
            Board.setText(input + "-");
        }
        if (buClicked == jboMultiplication)
        {
            Board.setText(input + "*");
        }
        if (buClicked == jboDivision)
        {
            Board.setText(input + "/");
        }
        if (buClicked == jboDot)
        {
            Board.setText(input + ".");
        }
        if (buClicked == jboLp)
        {
            Board.setText(input + "(");
        }
        if (buClicked == jboRp)
        {
            Board.setText(input + ")");
        }
    }
   
     private void boardClear()
    {
        Board.setText("");
    }
   
    public void Calculate()
    {
        int counter;
        int numParenthesis = 0;
        int lenInput;
        String calc;
        String Answer = "";
        char NumOther;
       
        calc = Board.getText();
        lenInput = calc.length();
       
        for (counter = 0; counter < lenInput; counter++)
        {
            NumOther = calc.charAt(counter);
            if (NumOther == ')')
            {
                numParenthesis--;
            }
            if (NumOther == '(')
            {
                numParenthesis++;
            }
            if ((NumOther < '(') || (NumOther > '9') || (NumOther == '.'))
            {
                Board.setText("Error");
            }
            if (NumOther == '.' && (counter + 1 < calc.length()))
            {
                for (int k = counter + 1; (k < calc.length()) && ((Character.isDigit(calc.charAt(k))) || ((calc.charAt(k))) == '.'); k++)
                {
                    if (calc.charAt(k) == '.')
                    {
                        Board.setText("Error");
                    }
                }
            }
        }
        if (numParenthesis != 0)
        {
            Board.setText("Error");
        }
        else
        {
            Answer = Calculate2(calc);
            Board.setText(Answer);
        }
    }

       
    private String CalculatorImp(String oper1, String oper2, char Oper)
    {
        Double op1, op2;
        double ops1, ops2;
        double ans = 0;
        String result;
       
        op1 = new Double (oper1);
        op2 = new Double (oper2);
        ops1 = op1.doubleValue();
        ops2 = op2.doubleValue();
       
        if (Oper == '+')
        {
            ans = ops1 + ops2;
        }
        if (Oper == '-')
        {
            ans = ops1 - ops2;
        }
        if (Oper == '*')
        {
            ans = ops1 * ops2 ;
        }
        if (Oper == '/')
        {
            ans = ops1/ops2;
        }
       
        result = Double.toString(ans);
        return result;
    }

       
   
    private String Calculate2(String process)
    {
        String answer = process;
        String op1 = "";
        String op2 = "";
        char userinput;
        int index = 0;
        int indexL = 0;
        int indexR = 0;
        int numInput = answer.length();
        int numPar = 0;
        int matchPar = 0;
        int indexOp1 = 0;
        int indexOp2 = 0;
       
        if (answer  != "Error")
        {
            for (index = 0; index < numInput; index++)
            {
                userinput = answer.charAt(index);
               
                if (userinput  == '(')
                {
                    if (matchPar == 0)
                    {
                        indexOp1 = index;
                    }
                    matchPar++;
                    numPar++;
                }
                if (userinput == ')')
                {
                    matchPar--;
                    if (matchPar ==0)
                    {
                        indexOp2 = index;
                    }
                }
            }
            if (indexOp1 + 1 == indexOp2)
            {
                Board.setText("Error");
            }
            if (answer == "Error"  && numPar > 0)
            {
                if (indexOp1 == 0)
                {
                    if (indexOp2 == (numInput - 1))
                    {
                        if (indexOp1 != indexOp2)
                        {
                            answer = Calculate2(answer.substring(indexOp1 + 1, indexOp2));
                        }
                    }
                }
                else if (indexOp1 == 0 && indexOp2 > 0)
                {
                    if ((Character.isDigit(answer.charAt(indexOp2 + 1))))
                    {
                        Board.setText("Error");
                    }
                    else
                    {
                        answer = Calculate2(answer.substring(indexOp1 + 1, indexOp2)) + answer.substring(indexOp2 + 1);
                        numPar--;
                        while (numPar != 0)
                        {
                            answer = Calculate2(answer);
                            numPar--;
                        }
                    }
                }
                else if ((indexOp1 > 0) && (indexOp2 > 0) && (indexOp2 != numInput - 1))
                {
                    if (((Character.isDigit(answer.charAt(indexOp2 + 1 ))) ||  (Character.isDigit(answer.charAt(indexOp1 - 1 ))) ))
                    {
                        Board.setText("Error");
                    }
                    else
                    {
                        answer = answer.substring(0, indexOp1) + Calculate2(answer.substring(indexOp1 + 1, indexOp2)) + answer.substring(indexOp2 + 1);
                        numPar--;
                        while (numPar != 0)
                        {
                            answer = Calculate2(answer);
                            numPar--;
                        }
                    }
                }
                else if (indexOp2 == numInput - 1 && indexOp1 > 0)
                {
                    if (((Character.isDigit(answer.charAt(indexOp1 - 1)))))
                    {
                        Board.setText("Error");
                    }
                    else
                    {
                        answer = answer.substring(0, indexOp1) + Calculate2(answer.substring(indexOp1 + 1, indexOp2));
                        numPar--;
                        while (numPar != 0)
                        {
                            answer = Calculate2(answer);
                            numPar--;
                        }
                    }
                }
            }
            if (numPar == 0)
            {
                if (answer != "Error")
                {
                    if (!(Character.isDigit(answer.charAt(0))))
                    {
                        if (answer.charAt(0) != '-')
                        {
                            if (!(Character.isDigit(answer.charAt(answer.length() - 1))))
                            {
                                Board.setText("Error");
                            }
                        }
                    }
                }
            }
           
            for (index = 0; index < answer.length() && (answer == "Error"); index++)
            {
                userinput = answer.charAt(index);
               
                if (userinput == '*' || userinput == '/')
                {
                    if (!(Character.isDigit(answer.charAt(index-1))) || (!(Character.isDigit(answer.charAt(index + 1)))))
                    {
                        if (answer.charAt(index + 1) != '-')
                        {
                            Board.setText("Error");
                        }
                    }
                    if (answer.charAt(index + 1) == '-')
                    {
                        if (!(Character.isDigit(answer.charAt(index + 2))))
                        {
                            Board.setText("Error");
                        }
                    }
                    if (answer == "Error")
                    {
                        indexL = index - 1;
                       
                        if (indexL > 2)
                        {
                            if ((answer.charAt(indexL - 1)) == '-')
                            {
                                if ((answer.charAt(indexL - 2)) == 'E')
                                {
                                    indexL = indexL -2;
                                }
                            }
                        }
                            while ((indexL  > 0) && ((Character.isDigit(answer.charAt(indexL - 2)) || ((answer.charAt(indexL - 1)) == '.') || ((answer.charAt(indexL - 1)) == 'E' ))))
                            {
                                indexL--;
                            }
                            if (indexL == 1)
                            {
                                if ((answer.charAt(indexL - 1)) == '-')
                                {
                                    indexL--;
                                }
                            }
                            if (indexL > 2)
                            {
                                if (((answer.charAt(indexL - 1)) == '-') && !(Character.isDigit(answer.charAt(indexL - 2))))
                                    {
                                        indexL--;
                                    }
                            }
                            op2 = answer.substring(index + 1, indexR + 1);
                         
                            }
                        }
                    }
                }
               
               
                for (index = 0; index < answer.length() && (answer != "Error"); index++)
                {
                    if (index == 0)
                    {
                        index = 1;
                    }
                }
                if (index > 0)
                {
                   
                        if (answer.charAt(index + 1) == '-')
                        {
                            index = index + 2;
                        }
                   
                }
               
                userinput = answer.charAt(index);
               
                if ((userinput == '+') || (userinput == '-'))
                {
                    if (!(Character.isDigit(answer.charAt(index - 1))))
                    {
                        Board.setText("Error");
                    }
                    if (!(Character.isDigit(answer.charAt(index + 1))))
                    {
                        Board.setText("Error");
                    }
                    if ((answer.charAt(index+1) == '-') && (!(Character.isDigit(answer.charAt(index+2)))))
                    {
                         Board.setText("Error");
                    }
                    if (answer != "Error")
                    {
                        indexL = 0;
                        op1 = answer.substring(indexL , index);
                        indexR = index + 1;
                        while((indexR < answer.length()-1) && ((Character.isDigit(answer.charAt(indexR + 1))) || ((answer.charAt(indexR + 1)) == '.') || ((answer.charAt(indexR + 1)) == 'E')))
                        {
                            indexR++;
                            if (indexR < answer.length() - 2)
                            {
                               
                                    if ((answer.charAt(indexR + 1)) == '-')
                                    {
                                        indexR++;
                                    }
                             
                            }
                        }
                        op2 = answer.substring(index + 1, indexR + 1);
                        answer = CalculatorImp(op1, op2, userinput ) + answer.substring(indexR + 1);
                        index = 0;
                    }
                }
           
       
        return answer;
    }

}
0
 
ramiseesniblicCommented:
You have not instantiated  the JTextField or added it to the panel.

You need to do that.
0
 
perdoname_Author Commented:
Okay i did it :

        Panel panel1 = new Panel();
        this.setDefaultCloseOperation( EXIT_ON_CLOSE );
        Board = new JTextField(50);
        outputPane.add(Board);
       // outputPane.add(panel1);

but nothing being transferred to the panel :S


0
 
ramiseesniblicCommented:
This is a continuation of my bad day.

The code that I posted is not adding stuff to the panel1, but adding it to the default panel of the JFrame ( outputPane ).

0
 
perdoname_Author Commented:
So do i have to replace the outputPane with panel1 ??
0
 
ramiseesniblicCommented:
You can do if you want to.  

Probably a good idea as it gives you more control over the flow.  This means that you could create additional panels with different flows on them, and add them to the contentPane.

If you want to, uncomment the line // outputPane.add(panel1); and put at the bottom of your constructor.

Change the outputPane.add() to panel1 .add()
0
 
perdoname_Author Commented:
But when im trying to change the outputPane.setLayout  to panel1.setLayout() i get an error and in that way the layout does not arrange the buttons

[????]

import java.awt.*;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.*;

public class Calculator extends JFrame implements ActionListener
{
    public static final int Width = 500;
    public static final int Height = 500;
   
    private JTextField Board;
    private JButton jbo0, jbo1, jbo2, jbo3, jbo4, jbo5, jbo6, jbo7, jbo8, jbo9,
                    jboAddition, jboSubtraction, jboMultiplication, jboDivision,
                    jboDot, jboLp, jboRp, jboClear, jboResult;
                   
   /*                
    public static void main(String args[])
  {
    JFrame applet = new Calculator();
    JFrame frame = new JFrame();
    frame.add(frame);
    frame.setSize(Width,Height);
    frame.show();
  }
  */
 
 public static void main(String args[])
  {
    JFrame outputFrame = new Calculator();
   

//panel1.add(allyourstuff);
//panel1.add(moreofyourstuff);

    outputFrame.setVisible(true);
  }
    public Calculator()
    {
        Container outputPane = this.getContentPane();
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(Width, Height);
        outputPane.setLayout(new GridLayout (3, 3));
       
        Panel panel1 = new Panel();
        this.setDefaultCloseOperation( EXIT_ON_CLOSE );
        Board = new JTextField();
        panel1.add(Board);
        outputPane.add(panel1);

        //panel1.add(jbo0);
 
        //Numbers
        setLayout(new FlowLayout());
        setFont(new Font("Helvetica", Font.PLAIN, 8));

        JButton jbo0 = new JButton("0");
        jbo0.addActionListener(this);
        panel1.add(jbo0);
        jbo1 = new JButton("1");
        panel1.add(jbo1);
        jbo1.addActionListener(this);
        jbo2 = new JButton("2");
        panel1.add(jbo2);
        jbo2.addActionListener(this);
        jbo3 = new JButton("3");
        panel1.add(jbo3);
        jbo3.addActionListener(this);
        jbo4 = new JButton("4");
        panel1.add(jbo4);
        jbo4.addActionListener(this);
        jbo5 = new JButton("5");
        panel1.add(jbo5);
        jbo5.addActionListener(this);
        jbo6 = new JButton("6");
        panel1.add(jbo6);
        jbo6.addActionListener(this);
        jbo7 = new JButton("7");
        panel1.add(jbo7);
        jbo7.addActionListener(this);
        jbo8 = new JButton("8");
        panel1.add(jbo8);
        jbo8.addActionListener(this);
        jbo9 = new JButton("9");
        panel1.add(jbo9);
        jbo9.addActionListener(this);
       
        //Math Operations
       
        jboAddition = new JButton("+");
        panel1.add(jboAddition);
        jboAddition.addActionListener(this);
        jboSubtraction = new JButton("-");
        panel1.add(jboSubtraction);
        jboSubtraction.addActionListener(this);
        jboMultiplication = new JButton("*");
        panel1.add(jboMultiplication);
        jboMultiplication.addActionListener(this);
        jboDivision = new JButton("/");
        panel1.add(jboDivision);
        jboDivision.addActionListener(this);
       
        //Result etc..
       
        jboDot = new JButton(".");
        panel1.add(jboDot);
        jboDot.addActionListener(this);
        jboLp = new JButton("(");
        panel1.add(jboLp);
        jboLp.addActionListener(this);
        jboRp = new JButton(")");
        panel1.add(jboRp);
        jboRp.addActionListener(this);
        jboClear = new JButton("C");
        panel1.add(jboClear);
        jboClear.addActionListener(this);
        jboResult = new JButton("=");
        panel1.add(jboResult);
        jboResult.addActionListener(this);
       


    }
   
    public void actionPerformed(ActionEvent e)
    {
        if (e.getSource() instanceof JButton)
        {
            JButton buClicked = (JButton) e.getSource();
            if (buClicked == jboClear)
            {
                boardClear();
            }
            else if(buClicked == jboResult)
            {
                Calculate();
            }
        }
        else
        {
            Calculate();
        }
    }
   
    public void UserInput(JButton buClicked)
    {
        String input;
        input = Board.getText();
        if (buClicked == jbo0)
        {
            Board.setText(input + "0");
        }
        if (buClicked == jbo1)
        {
            Board.setText(input + "1");
        }
        if (buClicked == jbo2)
        {
            Board.setText(input + "2");
        }
        if (buClicked == jbo3)
        {
            Board.setText(input + "3");
        }
        if (buClicked == jbo4)
        {
            Board.setText(input + "4");
        }
        if (buClicked == jbo5)
        {
            Board.setText(input + "5");
        }
        if (buClicked == jbo6)
        {
            Board.setText(input + "6");
        }
        if (buClicked == jbo7)
        {
            Board.setText(input + "7");
        }
        if (buClicked == jbo8)
        {
            Board.setText(input + "8");
        }
        if (buClicked == jbo9)
        {
            Board.setText(input + "9");
        }
        if (buClicked == jboAddition)
        {
            Board.setText(input + "+");
        }
        if (buClicked == jboSubtraction)
        {
            Board.setText(input + "-");
        }
        if (buClicked == jboMultiplication)
        {
            Board.setText(input + "*");
        }
        if (buClicked == jboDivision)
        {
            Board.setText(input + "/");
        }
        if (buClicked == jboDot)
        {
            Board.setText(input + ".");
        }
        if (buClicked == jboLp)
        {
            Board.setText(input + "(");
        }
        if (buClicked == jboRp)
        {
            Board.setText(input + ")");
        }
    }
   
     private void boardClear()
    {
        Board.setText("");
    }
   
    public void Calculate()
    {
        int counter;
        int numParenthesis = 0;
        int lenInput;
        String calc;
        String Answer = "";
        char NumOther;
       
        calc = Board.getText();
        lenInput = calc.length();
       
        for (counter = 0; counter < lenInput; counter++)
        {
            NumOther = calc.charAt(counter);
            if (NumOther == ')')
            {
                numParenthesis--;
            }
            if (NumOther == '(')
            {
                numParenthesis++;
            }
            if ((NumOther < '(') || (NumOther > '9') || (NumOther == '.'))
            {
                Board.setText("Error");
            }
            if (NumOther == '.' && (counter + 1 < calc.length()))
            {
                for (int k = counter + 1; (k < calc.length()) && ((Character.isDigit(calc.charAt(k))) || ((calc.charAt(k))) == '.'); k++)
                {
                    if (calc.charAt(k) == '.')
                    {
                        Board.setText("Error");
                    }
                }
            }
        }
        if (numParenthesis != 0)
        {
            Board.setText("Error");
        }
        else
        {
            Answer = Calculate2(calc);
            Board.setText(Answer);
        }
    }

       
    private String CalculatorImp(String oper1, String oper2, char Oper)
    {
        Double op1, op2;
        double ops1, ops2;
        double ans = 0;
        String result;
       
        op1 = new Double (oper1);
        op2 = new Double (oper2);
        ops1 = op1.doubleValue();
        ops2 = op2.doubleValue();
       
        if (Oper == '+')
        {
            ans = ops1 + ops2;
        }
        if (Oper == '-')
        {
            ans = ops1 - ops2;
        }
        if (Oper == '*')
        {
            ans = ops1 * ops2 ;
        }
        if (Oper == '/')
        {
            ans = ops1/ops2;
        }
       
        result = Double.toString(ans);
        return result;
    }

       
   
    private String Calculate2(String process)
    {
        String answer = process;
        String op1 = "";
        String op2 = "";
        char userinput;
        int index = 0;
        int indexL = 0;
        int indexR = 0;
        int numInput = answer.length();
        int numPar = 0;
        int matchPar = 0;
        int indexOp1 = 0;
        int indexOp2 = 0;
       
        if (answer  != "Error")
        {
            for (index = 0; index < numInput; index++)
            {
                userinput = answer.charAt(index);
               
                if (userinput  == '(')
                {
                    if (matchPar == 0)
                    {
                        indexOp1 = index;
                    }
                    matchPar++;
                    numPar++;
                }
                if (userinput == ')')
                {
                    matchPar--;
                    if (matchPar ==0)
                    {
                        indexOp2 = index;
                    }
                }
            }
            if (indexOp1 + 1 == indexOp2)
            {
                Board.setText("Error");
            }
            if (answer == "Error"  && numPar > 0)
            {
                if (indexOp1 == 0)
                {
                    if (indexOp2 == (numInput - 1))
                    {
                        if (indexOp1 != indexOp2)
                        {
                            answer = Calculate2(answer.substring(indexOp1 + 1, indexOp2));
                        }
                    }
                }
                else if (indexOp1 == 0 && indexOp2 > 0)
                {
                    if ((Character.isDigit(answer.charAt(indexOp2 + 1))))
                    {
                        Board.setText("Error");
                    }
                    else
                    {
                        answer = Calculate2(answer.substring(indexOp1 + 1, indexOp2)) + answer.substring(indexOp2 + 1);
                        numPar--;
                        while (numPar != 0)
                        {
                            answer = Calculate2(answer);
                            numPar--;
                        }
                    }
                }
                else if ((indexOp1 > 0) && (indexOp2 > 0) && (indexOp2 != numInput - 1))
                {
                    if (((Character.isDigit(answer.charAt(indexOp2 + 1 ))) ||  (Character.isDigit(answer.charAt(indexOp1 - 1 ))) ))
                    {
                        Board.setText("Error");
                    }
                    else
                    {
                        answer = answer.substring(0, indexOp1) + Calculate2(answer.substring(indexOp1 + 1, indexOp2)) + answer.substring(indexOp2 + 1);
                        numPar--;
                        while (numPar != 0)
                        {
                            answer = Calculate2(answer);
                            numPar--;
                        }
                    }
                }
                else if (indexOp2 == numInput - 1 && indexOp1 > 0)
                {
                    if (((Character.isDigit(answer.charAt(indexOp1 - 1)))))
                    {
                        Board.setText("Error");
                    }
                    else
                    {
                        answer = answer.substring(0, indexOp1) + Calculate2(answer.substring(indexOp1 + 1, indexOp2));
                        numPar--;
                        while (numPar != 0)
                        {
                            answer = Calculate2(answer);
                            numPar--;
                        }
                    }
                }
            }
            if (numPar == 0)
            {
                if (answer != "Error")
                {
                    if (!(Character.isDigit(answer.charAt(0))))
                    {
                        if (answer.charAt(0) != '-')
                        {
                            if (!(Character.isDigit(answer.charAt(answer.length() - 1))))
                            {
                                Board.setText("Error");
                            }
                        }
                    }
                }
            }
           
            for (index = 0; index < answer.length() && (answer == "Error"); index++)
            {
                userinput = answer.charAt(index);
               
                if (userinput == '*' || userinput == '/')
                {
                    if (!(Character.isDigit(answer.charAt(index-1))) || (!(Character.isDigit(answer.charAt(index + 1)))))
                    {
                        if (answer.charAt(index + 1) != '-')
                        {
                            Board.setText("Error");
                        }
                    }
                    if (answer.charAt(index + 1) == '-')
                    {
                        if (!(Character.isDigit(answer.charAt(index + 2))))
                        {
                            Board.setText("Error");
                        }
                    }
                    if (answer == "Error")
                    {
                        indexL = index - 1;
                       
                        if (indexL > 2)
                        {
                            if ((answer.charAt(indexL - 1)) == '-')
                            {
                                if ((answer.charAt(indexL - 2)) == 'E')
                                {
                                    indexL = indexL -2;
                                }
                            }
                        }
                            while ((indexL  > 0) && ((Character.isDigit(answer.charAt(indexL - 2)) || ((answer.charAt(indexL - 1)) == '.') || ((answer.charAt(indexL - 1)) == 'E' ))))
                            {
                                indexL--;
                            }
                            if (indexL == 1)
                            {
                                if ((answer.charAt(indexL - 1)) == '-')
                                {
                                    indexL--;
                                }
                            }
                            if (indexL > 2)
                            {
                                if (((answer.charAt(indexL - 1)) == '-') && !(Character.isDigit(answer.charAt(indexL - 2))))
                                    {
                                        indexL--;
                                    }
                            }
                            op2 = answer.substring(index + 1, indexR + 1);
                         
                            }
                        }
                    }
                }
               
               
                for (index = 0; index < answer.length() && (answer != "Error"); index++)
                {
                    if (index == 0)
                    {
                        index = 1;
                    }
                }
                if (index > 0)
                {
                   
                        if (answer.charAt(index + 1) == '-')
                        {
                            index = index + 2;
                        }
                   
                }
               
                userinput = answer.charAt(index);
               
                if ((userinput == '+') || (userinput == '-'))
                {
                    if (!(Character.isDigit(answer.charAt(index - 1))))
                    {
                        Board.setText("Error");
                    }
                    if (!(Character.isDigit(answer.charAt(index + 1))))
                    {
                        Board.setText("Error");
                    }
                    if ((answer.charAt(index+1) == '-') && (!(Character.isDigit(answer.charAt(index+2)))))
                    {
                         Board.setText("Error");
                    }
                    if (answer != "Error")
                    {
                        indexL = 0;
                        op1 = answer.substring(indexL , index);
                        indexR = index + 1;
                        while((indexR < answer.length()-1) && ((Character.isDigit(answer.charAt(indexR + 1))) || ((answer.charAt(indexR + 1)) == '.') || ((answer.charAt(indexR + 1)) == 'E')))
                        {
                            indexR++;
                            if (indexR < answer.length() - 2)
                            {
                               
                                    if ((answer.charAt(indexR + 1)) == '-')
                                    {
                                        indexR++;
                                    }
                             
                            }
                        }
                        op2 = answer.substring(index + 1, indexR + 1);
                        answer = CalculatorImp(op1, op2, userinput ) + answer.substring(indexR + 1);
                        index = 0;
                    }
                }
           
       
        return answer;
    }

}
0
 
ramiseesniblicCommented:
This is a whole new reading topic :-)

Take a look at: http://java.sun.com/docs/books/tutorial/uiswing/layout/visual.html

The setLayout takes a layout manager as an argument.

0

Featured Post

Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

Tackle projects and never again get stuck behind a technical roadblock.
Join Now