SwingCalculator

Hi I am doing a calculator as the standard one from Microsoft but it doesn't work the same.

When i input a number and then press an operator button, press a number and then if i want to press a operator button again it doesn't display the result and in fact doesn't work. Here my code does anyone have an idea.

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.text.DecimalFormat;

publicclass SwingCalculatorextends JFrameimplements ActionListener{

private JTextField ioArea, curArea;

private Component curComponent;

private JPopupMenu Menu;

private JButton plusButton, minusButton, timesButton, divideButton, equalButton, clearButton, exitButton , deleteButton, dotButton;

private JButton Button0, Button1 , Button2 , Button3 , Button4 , Button5 , Button6 , Button7 , Button8 , Button9;

private JButton saButton;

private JMenuBar menubar;

private JMenu choicesMenu;

private JMenuItem copyItem, cutItem, pasteItem, deleteItem, exitItem;

private DecimalFormat dfmt =new DecimalFormat("#0.###############################");

privatedouble n1 = 0;

privatedouble n2 = 0;

class MyListenerextends WindowAdapter{

publicvoid windowClosing(WindowEvent event){

System.exit(0);

}

}

class MyMouseextends MouseAdapter{

publicvoid mouseReleased(MouseEvent mEvent){

if (mEvent.isPopupTrigger());

{

curComponent = mEvent.getComponent();

ioArea = (JTextField) curComponent;// for cut, copy and paste method

}

}

}// end class MyMouse

SwingCalculator(){

setTitle("MS CALCULATOR");

addWindowListener(new MyListener());

ioArea =new JTextField();

ioArea.setBorder(BorderFactory.createTitledBorder("Input number"));

ioArea.setToolTipText("Enter numbers here");

ioArea.setHorizontalAlignment(JTextField.RIGHT);

ioArea.setEditable(false);

ioArea.setBackground(Color.white);

MyMouse handleMouse =new MyMouse();

ioArea.addMouseListener(handleMouse);

// define buttons and assign listeners

plusButton =new JButton("+");

minusButton =new JButton("-");

timesButton =new JButton("*");

divideButton =new JButton("/");

equalButton =new JButton("=");

dotButton =new JButton(".");

Button0 =new JButton("0");

Button1 =new JButton("1");

Button2 =new JButton("2");

Button3 =new JButton("3");

Button4 =new JButton("4");

Button5 =new JButton("5");

Button6 =new JButton("6");

Button7 =new JButton("7");

Button8 =new JButton("8");

Button9 =new JButton("9");

saButton =new JButton("SA");

clearButton =new JButton("AC");

clearButton.setForeground(Color.red);

clearButton.setMnemonic(KeyEvent.VK_A);

deleteButton =new JButton("C");

deleteButton.setMnemonic(KeyEvent.VK_C);

deleteButton.setForeground(Color.red);

exitButton =new JButton("Exit");

exitButton.setMnemonic(KeyEvent.VK_E);

exitButton.setForeground(Color.red);

plusButton.addActionListener(this);

minusButton.addActionListener(this);

timesButton.addActionListener(this);

divideButton.addActionListener(this);

equalButton.addActionListener(this);

saButton.addActionListener(this);

Button0.addActionListener(this);

Button1.addActionListener(this);

Button2.addActionListener(this);

Button3.addActionListener(this);

Button4.addActionListener(this);

Button5.addActionListener(this);

Button6.addActionListener(this);

Button7.addActionListener(this);

Button8.addActionListener(this);

Button9.addActionListener(this);

clearButton.addActionListener(this);

deleteButton.addActionListener(this);

exitButton.addActionListener(this);

dotButton.addActionListener(this);

menubar =new JMenuBar();

choicesMenu =new JMenu("Edit");

copyItem =new JMenuItem("Copy");

cutItem =new JMenuItem("Cut");

pasteItem =new JMenuItem("Paste");

exitItem =new JMenuItem("Exit");

deleteItem =new JMenuItem("Delete");

choicesMenu.add(copyItem);

choicesMenu.add(cutItem);

choicesMenu.add(pasteItem);

choicesMenu.add(deleteItem);

choicesMenu.addSeparator();

choicesMenu.add(exitItem);

copyItem.addActionListener(this);

cutItem.addActionListener(this);

pasteItem.addActionListener(this);

deleteItem.addActionListener(this);

exitItem.addActionListener(this);

plusButton.setToolTipText("PlusButton");

minusButton.setToolTipText("MinusButton");

timesButton.setToolTipText("TimesButton");

divideButton.setToolTipText("DivideButton");

saButton.setToolTipText("Select All");

// set up panels, layout mangers add components

JPanel mainPanel =new JPanel();

mainPanel.setLayout(new BorderLayout());

JPanel ioPanel =new JPanel();

ioPanel.setLayout(new GridLayout(1,1));

JPanel butPanel =new JPanel();

butPanel.setLayout(new GridLayout(5,4,5,5));

ioPanel.add(ioArea);

Font spe =new Font("Arial", Font.PLAIN, 16);

plusButton.setFont(spe);

timesButton.setFont(spe);

clearButton.setFont(spe);

minusButton.setFont(spe);

divideButton.setFont(spe);

exitButton.setFont(spe);

deleteButton.setFont(spe);

dotButton.setFont(spe);

butPanel.add(saButton);

butPanel.add(clearButton);

butPanel.add(deleteButton);

butPanel.add(exitButton);

butPanel.add(Button7);

butPanel.add(Button8);

butPanel.add(Button9);

butPanel.add(divideButton);

butPanel.add(Button4);

butPanel.add(Button5);

butPanel.add(Button6);

butPanel.add(timesButton);

butPanel.add(Button1);

butPanel.add(Button2);

butPanel.add(Button3);

butPanel.add(minusButton);

butPanel.add(Button0);

butPanel.add(dotButton);

butPanel.add(equalButton);

butPanel.add(plusButton);

menubar.add(choicesMenu);

setJMenuBar(menubar);

mainPanel.add(ioPanel,BorderLayout.NORTH);

mainPanel.add(butPanel,BorderLayout.SOUTH);

try{

UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

SwingUtilities.updateComponentTreeUI(mainPanel);

}catch (Exception e){

System.out.println(e);

}

// add panel to the frame

getContentPane().add(mainPanel);

pack();

setVisible(true);

}// end contructor

publicstaticvoid main(String[] args){

SwingCalculator mycalculator =new SwingCalculator();

mycalculator.setResizable(false);// set the window resizable

}

char operation =' ';

double tanswer;

boolean enter =false;

publicvoid actionPerformed(ActionEvent event){

String answer;

if(event.getSource() == Button0){

if(enter){

ioArea.setText(dfmt.format(0));

enter =false;

}else{

ioArea.setText(ioArea.getText() + dfmt.format(0));

}

}elseif(event.getSource() == Button1){

if(enter){

ioArea.setText(dfmt.format(1));

enter =false;

}else{

ioArea.setText(ioArea.getText() + dfmt.format(1));

}

}elseif(event.getSource() == Button2){

if(enter){

ioArea.setText(dfmt.format(2));

enter =false;

}else{

ioArea.setText(ioArea.getText() + dfmt.format(2));

}

}elseif(event.getSource() == Button3){

if(enter){

ioArea.setText(dfmt.format(3));

enter =false;

}else{

ioArea.setText(ioArea.getText() + dfmt.format(3));

}

}elseif(event.getSource() == Button4){

if(enter){

ioArea.setText(dfmt.format(4));

enter =false;

}else{

ioArea.setText(ioArea.getText() + dfmt.format(4));

}

}elseif(event.getSource() == Button5){

if(enter){

ioArea.setText(dfmt.format(5));

enter =false;

}else{

ioArea.setText(ioArea.getText() + dfmt.format(5));

}

}elseif(event.getSource() == Button6){

if(enter){

ioArea.setText(dfmt.format(6));

enter =false;

}else{

ioArea.setText(ioArea.getText() + dfmt.format(6));

}

}elseif(event.getSource() == Button7){

if(enter){

ioArea.setText(dfmt.format(7));

enter =false;

}else{

ioArea.setText(ioArea.getText() + dfmt.format(7));

}

}elseif(event.getSource() == Button8){

if(enter){

ioArea.setText(dfmt.format(8));

enter =false;

}else{

ioArea.setText(ioArea.getText() + dfmt.format(8));

}

}elseif(event.getSource() == Button9){

if(enter){

ioArea.setText(dfmt.format(9));

enter =false;

}else{

ioArea.setText(ioArea.getText() + dfmt.format(9));

}

}elseif(event.getSource() == dotButton){

if(enter){

ioArea.setText(".");

enter =false;

}else{

ioArea.setText(ioArea.getText() +".");

}

}elseif(event.getSource() == saButton){

ioArea.requestFocus();

ioArea.selectAll();

}if(event.getSource() == plusButton){

operation ='p';

String s1 = ioArea.getText();

enter =false;

try{

n1 = Double.parseDouble(s1);

}

catch(NumberFormatException err){

ioArea.setText("Error converting number");

}

ioArea.setText(" ");

}elseif(event.getSource() == minusButton){

operation ='m';

String s1 = ioArea.getText();

enter =false;

try{

n1 = Double.parseDouble(s1);

}

catch(NumberFormatException err){

ioArea.setText("Error converting number");

}

ioArea.setText(" ");

}elseif(event.getSource() == timesButton){

operation ='t';

String s1 = ioArea.getText();

enter =false;

try{

n1 = Double.parseDouble(s1);

}

catch(NumberFormatException err){

ioArea.setText("Error converting number");

}

ioArea.setText(" ");

}elseif(event.getSource() == divideButton){

operation ='d';

String s1 = ioArea.getText();

enter =false;

try{

n1 = Double.parseDouble(s1);

}

catch(NumberFormatException err){

ioArea.setText("Error converting number");

}

ioArea.setText(" ");

}if(event.getSource() == equalButton){

String s2 = ioArea.getText();

enter =true;

try{

n2 = Double.parseDouble(s2);

}

catch (NumberFormatException err){

ioArea.setText("Error");

}

if (operation =='p'){

tanswer = n1 + n2;

ioArea.setText(dfmt.format(tanswer));

}elseif(operation =='m'){

tanswer = n1 - n2;

ioArea.setText(dfmt.format(tanswer));

}elseif(operation =='t'){

tanswer = n1 * n2;

ioArea.setText(dfmt.format(tanswer));

}elseif(operation =='d'){

if(n2 == 0){

ioArea.setText("Divide by zero");

}else{

tanswer = n1 / n2;

ioArea.setText(dfmt.format(tanswer));

}

}

}elseif(event.getSource() == clearButton){

ioArea.setText("");

}elseif(event.getSource() == deleteButton){

n1 = 0;

n2 = 0;

ioArea.setText("");

}elseif(event.getSource() == exitButton){

int returnvalue = JOptionPane.showConfirmDialog(this,"Are you sure?","Exit application", JOptionPane.YES_NO_OPTION);

if (returnvalue == JOptionPane.YES_OPTION)

System.exit(0);

else

return;

}elseif(event.getSource() == exitItem){

int returnvalue = JOptionPane.showConfirmDialog(this,"Are you sure?","Exit application", JOptionPane.YES_NO_OPTION);

if (returnvalue == JOptionPane.YES_OPTION)

System.exit(0);

else

return;

}elseif(event.getSource() == copyItem){

ioArea.setEditable(true);

ioArea.copy();

ioArea.setEditable(false);

}elseif(event.getSource() == cutItem){

ioArea.setEditable(true);

ioArea.cut();

ioArea.setEditable(false);

}elseif(event.getSource() == pasteItem){

ioArea.setEditable(true);

ioArea.paste();

ioArea.setEditable(false);

}elseif(event.getSource() == deleteItem){

ioArea.setText("");

}

}

}// end class

[25824 byte] By [Pierrick_WAa] at [2007-10-2 5:00:22]
# 1

]you can try:

//-

String s1=io.getText();

n1=Double.parseDouble(s1);

String s2=io.getText();

n2=Double.parseDouble(s2);

//

boolean stoper=true;

while(stoper){

if(operation.equals("s")){

n1+=n2;

ioArea.setText(dfmt.format(n1));

}

//

if(e.getSource==equalButton)

stoper=false;

}

ioArea.setText(dfmt.format(n1));

hyJacka at 2007-7-16 1:04:19 > top of Java-index,Java Essentials,Java Programming...