Logo 
Search:

Java Forum

Ask Question   UnAnswered
Home » Forum » Java       RSS Feeds

URGENT Help With Scientific Calculator

  Asked By: Cory    Date: Jan 05    Category: Java    Views: 934
  

I designed a calculator, and I need help with the rest of
the actions. I know I need to use the different Math
methods, but I tried tried that and it didn't work. Also,
it needs to work as an applet and application, and in the
applet, the buttons don't appear in order, how can I fix
that?

I will really appreciate your help with this program, I
can't get it to work and I'm frustrated, I need to finish
this for next Tuesday 16th. Please e-mail me at
laurare@....

Below is the code for the calcualtor.


// calculator
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

public class calculator extends JApplet implements
ActionListener
{
private JButton one, two, three, four, five, six, seven,
eight, nine, zero, dec, eq, plus, minus, mult, div,
clear,
mem, mrc, sin, cos, tan, asin, acos, atan, x2, sqrt, exp,
pi, percent;
private JLabel output, blank;
private Container container;
private String operation;
private double number1, number2, result;
private boolean clear = false;

//GUI
public void init()
{

container = getContentPane();
//Title
//super("Calculator");
JPanel container = new JPanel();
container.setLayout( new FlowLayout( FlowLayout.CENTER
) );

output = new JLabel("");
output.setBorder(new MatteBorder(2,2,2,2,Color.gray));
output.setPreferredSize(new Dimension(1,26));
getContentPane().setBackground(Color.white);
getContentPane().add( "North",output );
getContentPane().add( "Center",container );

//blank
blank = new JLabel( " " );
container.add( blank );

//clear
clear = new JButton( "CE" );
clear.addActionListener(this);
container.add( clear );

//seven
seven = new JButton( "7" );
seven.addActionListener(this);
container.add( seven );


//eight
eight = new JButton( "8" );
eight.addActionListener(this);
container.add( eight );

//nine
nine = new JButton( "9" );
nine.addActionListener(this);
container.add( nine );

//div
div = new JButton( "/" );
div.addActionListener(this);
container.add( div );

//four
four = new JButton( "4" );
four.addActionListener(this);
container.add( four );

//five
five = new JButton( "5" );
five.addActionListener(this);
container.add( five );

//six
six = new JButton( "6" );
six.addActionListener(this);
container.add( six );

//mult
mult = new JButton( "*" );
mult.addActionListener(this);
container.add( mult );

//one
one = new JButton( "1" );
one.addActionListener(this);
container.add( one );

//two
two = new JButton( "2" );
two.addActionListener(this);
container.add( two );

//three
three = new JButton( "3" );
three.addActionListener(this);
container.add( three );

//minus
minus = new JButton( "-" );
minus.addActionListener(this);
container.add( minus );

//zero
zero = new JButton( "0" );
zero.addActionListener(this);
container.add( zero );

//dec
dec = new JButton( "." );
dec.addActionListener(this);
container.add( dec );

//plus
plus = new JButton( "+" );
plus.addActionListener(this);
container.add( plus );

//mem
mem = new JButton( "MEM" );
mem.addActionListener(this);
container.add( mem );

//mrc
mrc = new JButton( "MRC" );
mrc.addActionListener(this);
container.add( mrc );

//sin
sin = new JButton( "SIN" );
sin.addActionListener(this);
container.add( sin );

//cos
cos = new JButton( "COS" );
cos.addActionListener(this);
container.add( cos );

//tan
tan = new JButton( "TAN" );
tan.addActionListener(this);
container.add( tan );

//asin
asin = new JButton( "ASIN" );
asin.addActionListener(this);
container.add( asin );

//acos
acos = new JButton( "ACOS" );
cos.addActionListener(this);
container.add( cos );

//atan
atan = new JButton( "ATAN" );
atan.addActionListener(this);
container.add( atan );

//x2
x2 = new JButton( "X2" );
x2.addActionListener(this);
container.add( x2 );

//sqrt
sqrt = new JButton( "SQRT" );
sqrt.addActionListener(this);
container.add( sqrt );

//exp
exp = new JButton( "EXP" );
exp.addActionListener(this);
container.add( exp );

//pi
pi = new JButton( "PI" );
pi.addActionListener(this);
container.add( pi );

//percent
percent = new JButton( "%" );
percent.addActionListener(this);
container.add( percent );

//eq
eq = new JButton( "=" );
eq.addActionListener(this);
container.add( eq );

//Set size and visible
setSize( 190, 285 );
setVisible( true );
}


public static void main(String args[]){
//execute applet as application

//applet's window
JFrame applicationWindow = new JFrame("calculator");

applicationWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//applet instance
calculator appletObject = new calculator();

//init and start methods
appletObject.init();
appletObject.start();



} // end main


public void actionPerformed(ActionEvent ae)
{
JButton but = ( JButton )ae.getSource();


//dec action
if( but.getText() == "." )
{
//if dec is pressed, first check to make shure there
is not already a decimal
String temp = output.getText();
if( temp.indexOf( '.' ) == -1 )
output.setText( output.getText() + but.getText() );
}

//clear action
else if( but.getText() == "CE" )
{
output.setText( "" );
operation = "";
number1 = 0.0;
number2 = 0.0;
}

//plus action
else if( but.getText() == "+" )
{
operation = "+";
number1 = Double.parseDouble( output.getText() );
clear = true;
//output.setText( "" );
}

//minus action
else if( but.getText() == "-" )
{
operation = "-";
number1 = Double.parseDouble( output.getText() );
clear = true;
//output.setText( "" );
}

//mult action
else if( but.getText() == "*" )
{
operation = "*";
number1 = Double.parseDouble( output.getText() );
clear = true;
//output.setText( "" );
}

//div action
else if( but.getText() == "/" )
{
operation = "/";
number1 = Double.parseDouble( output.getText() );
clear = true;
//output.setText( "" );
}

//eq action
else if( but.getText() == "=" )
{
number2 = Double.parseDouble( output.getText() );
if( operation == "+" )
result = number1 + number2;
else if( operation == "-" )
result = number1 - number2;
else if( operation == "*" )
result = number1 * number2;
else if( operation == "/" )
result = number1 / number2;


//output result
output.setText( String.valueOf( result ) );

clear = true;
operation = "";
}


//default action
else
{
if( clear == true )
{
output.setText( "" );
clear = false;
}
output.setText( output.getText() + but.getText() );
}
}

}

Share: 

 

1 Answer Found

 
Answer #1    Answered By: Samuel Costa     Answered On: Jan 05

There are few things you need to fix:

1. You set the JPanel's layout to FlowLayout. This will
make all components put into one  length row, and you
can't control it. So, I would suggest that you make
it into GridLayout, eg.

JPanel container  = new JPanel();
//container.setLayout( new FlowLayout( FlowLayout.CENTER));
container.setLayout(new GridLayout(4, 8)); // 4 rows and 8 columns

Then you add  your button components as your wish, by
filling the first row, second row, etc.

// First Row
//pi
pi = new JButton( "PI" );
pi.addActionListener(this);
container.add( pi );
//mem
mem = new JButton( "MEM" );
mem.addActionListener(this);
container.add( mem );
//mrc
mrc = new JButton( "MRC" );
mrc.addActionListener(this);
container.add( mrc );
//seven
seven = new JButton( "7" );
seven.addActionListener(this);
container.add( seven );
//eight
eight = new JButton( "8" );
eight.addActionListener(this);
container.add( eight );
//nine
nine = new JButton( "9" );
nine.addActionListener(this);
container.add( nine );
//div
div = new JButton( "/" );
div.addActionListener(this);
container.add( div );
// blank
blank = new JLabel();
container.add( blank  );

// Second row
//x2
x2 = new JButton( "X2" );
x2.addActionListener(this);
container.add( x2 );
//sin
sin = new JButton( "SIN" );
sin.addActionListener(this);
container.add( sin );
//asin
asin = new JButton( "ASIN" );
asin.addActionListener(this);
container.add( asin );
//four
four = new JButton( "4" );
four.addActionListener(this);
container.add( four );
//five
five = new JButton( "5" );
five.addActionListener(this);
container.add( five );
//six
six = new JButton( "6" );
six.addActionListener(this);
container.add( six );
//mult
mult = new JButton( "*" );
mult.addActionListener(this);
container.add( mult );
// blank
blank = new JLabel();
container.add( blank );

// third row
//sqrt
sqrt = new JButton( "SQRT" );
sqrt.addActionListener(this);
container.add( sqrt );
//cos
cos = new JButton( "COS" );
cos.addActionListener(this);
container.add( cos );
//acos
acos = new JButton( "ACOS" );
acos.addActionListener(this);
container.add( acos );
.... continue with the rest  and it would look like

PI MEM MRC 7 8 9 / [blank]
X2 SIN ASIN 4 5 6 * [blank]
SQRT COS ACOS 1 2 3 - %
EXP TAN ATAN 0 . = + CE

2. The second thing that I would like to highlight is
remove the setSize and setVisible methods from init.
This won't help  you set anything.
It's better to put it inside the main method.

public static void  main(String args[]){
//execute applet  as application
//applet's window
JFrame applicationWindow = new JFrame("calculator");

//applet instance
Calcg appletObject = new Calcg();

//init and start methods
appletObject.init();
//appletObject.start();

// Don't forget to add appletObject into the
// frame. The applet Object is considered as a component now.
applicationWindow.getContentPane().add(appletObject);

applicationWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//applicationWindow.setSize(190, 285);
// pack will automatically resize the window as default look.
applicationWindow.pack();
applicationWindow.setVisible(true);
} // end main

3. Just to make it nicer, maybe you can shift the result
to right hand side

output = new JLabel();
output.setBorder(new MatteBorder(2,2,2,2,Color.gray));
// set it to right hand side.
output.setHorizontalAlignment(SwingConstants.RIGHT);
output.setPreferredSize(new Dimension(1,26));

 
Didn't find what you were looking for? Find more on URGENT Help With Scientific Calculator Or get search suggestion and latest updates.




Tagged: