import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.applet.Applet;
public class Grafraknare extends Applet implements ItemListener, ActionListener
{
String number, s2, s1, sa, operand3, operand2, operand1, rensa, memory, clear;
int raknesatt = 0;
int raknesatt1 = 0;
double op1, op2, op3, res;
private Button btn0 = new Button ("0"); Button btn1 = new Button ("1");
Button btn2 = new Button ("2"); Button btn3 = new Button ("3");
Button btn4 = new Button ("4"); Button btn5 = new Button ("5");
Button btn6 = new Button ("6"); Button btn7 = new Button ("7");
Button btn8 = new Button ("8"); Button btn9 = new Button ("9");
Button btnAdd = new Button ("+"); Button btnSub = new Button ("-");
Button btnMult = new Button ("*"); Button btnDiv = new Button ("/");
Button btnPerCent = new Button ("%"); Button btnEqual = new Button ("=");
Button btnDecPoint = new Button ("."); Button btnC = new Button ("C");
Button btnAC = new Button ("AC"); Button btnMemAdd = new Button ("M+");
Button btnMS = new Button ("MS"); Button btnMR = new Button ("MR");
Button btnSin = new Button ("Sin"); Button btnCos = new Button ("Cos");
Button btnTan = new Button ("Tan"); Button btnPow = new Button ("X<->Y");
Button btnPosOrNeg = new Button ("+/-"); Button btnSqrt = new Button ("Sqrt");
Button btnMC = new Button ("MC"); Button btnPi = new Button ("Pi");
Button btnSqr = new Button ("X\u00B2"); Button btnX = new Button ("X");
Button btnClear = new Button ("Rensa"); Button btnGraph = new Button ("Rita");
int Choice=1;
CheckboxGroup cbg = new CheckboxGroup();
Checkbox box1 = new Checkbox("Graf", false, cbg);
Checkbox box2 = new Checkbox ("Räknare", true, cbg);
//////////////////////GRAF VARIABLAR////////////////////
private Button btnZoomIn;Button btnZoomOut;Button btnNorm;
private int k=-20;
private int x,y,a,b,c,d,e;
private int X1 = 0;
private int X2 = 0;
private int Y1 = 0;
private int NumberValue = 0;
private int NumberXValue = 0;
private int NumberYValue = 0;
private int PlusOrMinus;
private int XPlusOrMinus;
private int R1,R2;
private int XOrYValue=0;
private int YZero=80;
private int XZero=150;
private int PunktX1,PunktY1,PunktX2,PunktY2,PunktX3,PunktY3,PunktX4,PunktY4,PunktX5,PunktY5;
private String GraphText = new String("Graph Y = ");
private String ClearText = new String("");
private String XValue = new String("");
private String YValue = new String("");
////////////////////////////////////////////////////////////////////////////
TextField TextField1 = new TextField();
final int MenuBarHeight = 0;
public void init()
{
setBackground(Color.red);
setLayout(null);
TextField1.reshape(75,122,250,24);
TextField1.setBackground(Color.yellow);
TextField1.setEditable(false);
add (TextField1);
btnMemAdd.reshape(75,148,40,27);
btnMemAdd.setBackground(Color.orange);
btnMemAdd.addActionListener(this);
add (btnMemAdd);
btnMS.reshape(117,148,40,27);
btnMS.setBackground(Color.orange);
btnMS.addActionListener(this);
add (btnMS);
btnMR.reshape(159,148,40,27);
btnMR.setBackground(Color.orange);
btnMR.addActionListener(this);
add (btnMR);
btnMC.setBackground(Color.orange);
btnMC.reshape(201,148,40,27);
btnMC.addActionListener(this);
add (btnMC);
btnC.setBackground(Color.orange);
btnC.reshape(243,148,40,27);
btnC.addActionListener(this);
add (btnC);
btnAC.setBackground(Color.orange);
btnAC.reshape(286,148,40,27);
btnAC.addActionListener(this);
add (btnAC);
btnSin.setBackground(Color.orange);
btnSin.reshape(75,177,40,27);
btnSin.addActionListener(this);
add (btnSin);
btnCos.setBackground(Color.orange);
btnCos.reshape(117,177,40,27);
btnCos.addActionListener(this);
add (btnCos);
btnTan.setBackground(Color.orange);
btnTan.reshape(159,177,40,27);
btnTan.addActionListener(this);
add (btnTan);
btnPow.setBackground(Color.orange);
btnPow.reshape(201,177,40,27);
btnPow.addActionListener(this);
add (btnPow);
btnSqr.setBackground(Color.orange);
btnSqr.reshape(243,177,40,27);
btnSqr.addActionListener(this);
add (btnSqr);
btnSqrt.setBackground(Color.orange);
btnSqrt.reshape(286,177,40,27);
btnSqrt.addActionListener(this);
add (btnSqrt);
btn7.setBackground(Color.orange);
btn7.reshape(75,207,40,27);
btn7.addActionListener(this);
add (btn7);
btn8.setBackground(Color.orange);
btn8.reshape(117,207,40,27);
btn8.addActionListener(this);
add (btn8);
btn9.setBackground(Color.orange);
btn9.reshape(159,207,40,27);
btn9.addActionListener(this);
add (btn9);
btnX.setBackground(Color.orange);
btnX.reshape(201,207,40,27);
btnX.addActionListener(this);
add (btnX);
btnPosOrNeg.setBackground(Color.orange);
btnPosOrNeg.reshape(243,207,40,27);
btnPosOrNeg.addActionListener(this);
add (btnPosOrNeg);
btnGraph.setBackground(Color.orange);
btnGraph.reshape(286,207,40,57);
btnGraph.addActionListener(this);
add (btnGraph);
btn4.setBackground(Color.orange);
btn4.reshape(75,237,40,27);
btn4.addActionListener(this);
add (btn4);
btn5.setBackground(Color.orange);
btn5.reshape(117,237,40,27);
btn5.addActionListener(this);
add (btn5);
btn6.setBackground(Color.orange);
btn6.reshape(159,237,40,27);
btn6.addActionListener(this);
add (btn6);
btnMult.setBackground(Color.orange);
btnMult.reshape(201,237,40,27);
btnMult.addActionListener(this);
add (btnMult);
btnDiv.setBackground(Color.orange);
btnDiv.reshape(243,237,40,27);
btnDiv.addActionListener(this);
add (btnDiv);
btn1.setBackground(Color.orange);
btn1.reshape(75,267,40,27);
btn1.addActionListener(this);
add (btn1);
btn2.setBackground(Color.orange);
btn2.reshape(117,267,40,27);
btn2.addActionListener(this);
add (btn2);
btn3.setBackground(Color.orange);
btn3.reshape(159,267,40,27);
btn3.addActionListener(this);
add (btn3);
btnAdd.setBackground(Color.orange);
btnAdd.reshape(201,267,40,27);
btnAdd.addActionListener(this);
add (btnAdd);
btnSub.setBackground(Color.orange);
btnSub.reshape(243,267,40,27);
btnSub.addActionListener(this);
add (btnSub);
btnClear.setBackground(Color.orange);
btnClear.reshape(286,267,40,57);
btnClear.addActionListener(this);
add (btnClear);
btn0.setBackground(Color.orange);
btn0.reshape(75,297,40,27);
btn0.addActionListener(this);
add (btn0);
btnDecPoint.setBackground(Color.orange);
btnDecPoint.reshape(117,297,40,27);
btnDecPoint.addActionListener(this);
add (btnDecPoint);
btnPi.setBackground(Color.orange);
btnPi.reshape(159,297,40,27);
btnPi.addActionListener(this);
add (btnPi);
btnEqual.setBackground(Color.orange);
btnEqual.reshape(201,297,40,27);
btnEqual.addActionListener(this);
add (btnEqual);
btnPerCent.setBackground(Color.orange);
btnPerCent.reshape(243,297,40,27);
btnPerCent.addActionListener(this);
add (btnPerCent);
box1.setBackground(Color.orange);
box1.reshape(75,328,123,20);
box1.addItemListener(this);
add (box1);
box2.setBackground(Color.orange);
box2.reshape(201,328,123,20);
box2.addItemListener(this);
add (box2);
btnZoomIn = new Button(" 2:1 ");
btnZoomOut = new Button(" 1:2 ");
btnNorm = new Button(" 1:1 ");
btnZoomIn.setFont(new Font("Dialog",Font.BOLD,8));
btnZoomIn.reshape(178,11,48,15);
btnZoomOut.setFont(new Font("Dialog",Font.BOLD,8));
btnZoomOut.reshape(226,11,48,15);
btnNorm.setFont(new Font("Dialog",Font.BOLD,8));
btnNorm.reshape(274,11,48,15);
add(btnZoomIn);
add(btnZoomOut);
add(btnNorm);
btnZoomIn.addActionListener(this);
btnZoomOut.addActionListener(this);
btnNorm.addActionListener(this);
y = 150;
x = 80;
a = y+50;
b = x-50;
c = 40;
d = 10;
setVisible(true);
InitialPositionSet();
}
public void InitialPositionSet()
{
resize(420,400);
}
public void paint (Graphics g)
{
g.setColor(Color.black);// Sätter svart som färg
g.fillRect(65,0,270,357);// Skapar en Rektangel och fyller den med angiven färg (RAMEN)
Color col = new Color (255,255,128);
g.setColor(Color.black);// Sätter den egen definerade färgen som standard
g.fillRect(75,10,250,110);// Skapar en Rektangel och fyller den med angiven färg(GRAFEN)
if (Choice==0)
{
g.setColor(col);
g.fillRect(75,10,250,110);
g.setColor(Color.black);//Sätter svart som angiven färg
//vilket innebär att allt efter
//detta kommer att bli svart
int MinX=78; //Skapar max och minumvärde för
int MaxX=320; //Y-axeln respektive X-axeln
int MinY=13;
int MaxY=117;
int Ned = 5;
int Nr = -15;
g.drawLine(y,MinY,y,MaxY); // Y - axeln
g.drawLine(MinX,x,MaxX,x); // X - axeln
g.drawString("Y",135,20);
g.drawString("X",310,95);
g.drawString("Y = KX + M",250,105);
g.drawString("Y = X\u00B2 + Q",250,117);
////////////////////////////////
///////NORMAL ZOOOOMMMMM////////
if(d==10) //Zomläge normal,Startläge.
{
while(MinX < 320) //Så Strecken håller sig innanför fönstret.
{ // X-axel.
if(Ned ==5) //större streck o bokstäver var femte gång.
{
if(Nr+10 != 0)//Skriver ej ut siffran noll;
{
if(Nr+10 < 0)
g.drawString(""+(Nr+10), MinX+15,100); //Siffror vänster om y-axel
if(Nr+10 >0)
g.drawString(""+(Nr+10), MinX+16,70); //Siffror höger om y-axel
}
g.drawLine(MinX+22,73,MinX+22, 89);//Ritar stora snedstreck..
Ned = 0; //var femte gång.
Nr=Nr+5;
}
g.drawLine(MinX+2,76, MinX+2, 86);//Ritar små snedstreck på
MinX=MinX+10; //X-Axeln
Ned++;
}
Ned=5;
MinX=78;
Nr=-15;
while(MinY < 117)// Y-Axel...
{
if (Ned==5)
{
if(Nr+20 != 0)//Skriver ej ut siffran noll;
{
if(Nr+20 < 0)
g.drawString(""+(Nr+20),130,MinY+20); //Siffror under x axel
if(Nr+20 >0)
g.drawString(""+(Nr+20),165,MinY+20); //Siffror över x axel
}
g.drawLine(142,MinY+17,158,MinY+17);//Ritar stora sned streck y-axel.
Nr=Nr+5;
if(Nr+10 != 0)//Skriver ej ut siffran noll;
Ned = 0;
}
g.drawLine(145,MinY-3,155,MinY-3);//Ritar små sned streck
MinY = MinY+10; // på Y-axeln
Ned++;
}
MinY = 13;
}
///////////////////////////////////////
/////ZZZOOOOMMMM ------- /////////
if(d==5)
{
while(MinX < 320) //Så Strecken håller sig innanför fönstret.
{ // X-axel.
if(Ned ==5) //större streck o Siffror var femte gång.
{
if(Nr+5 != 0)//Skriver ej ut siffran noll;
{
if(Nr+5 < 0)
g.drawString(""+(Nr+5), MinX+15,100); //Siffror vänster om y-axel
if(Nr+5 >0)
g.drawString(""+(Nr+5), MinX+16,70); //Siffror höger om y-axel
}
g.drawLine(MinX+22,73,MinX+22, 89);//Ritar stora snedstreck..
Ned = 0; //var femte gång.
Nr=Nr+5;
}
g.drawLine(MinX+2,76, MinX+2, 86);//Ritar små snedstreck på
MinX=MinX+5; //X-Axeln
Ned++;
}
Ned=5;
MinX=78;
Nr=-15;
while(MinY < 117)// Y-Axel...
{
if (Ned==5)
{
if(Nr+25 != 0)//Skriver ej ut siffran noll;
{
if(Nr+25 < 0)
g.drawString(""+(Nr+25),130,MinY+23); //Siffror under x axel
if(Nr+25 >0)
g.drawString(""+(Nr+25),165,MinY+20); //Siffror över x axel
}
g.drawLine(142,MinY+17,158,MinY+17);//Ritar stora sned streck y-axel.
Nr=Nr-5;
Ned = 0;
}
g.drawLine(145,MinY-3,155,MinY-3);//Ritar små sned streck
MinY = MinY+5; // på Y-axeln
Ned++;
}
MinY = 13;
}
/////////// FÖÖÖÖRRRSSTORING ZOOOM +++////////////
//////////
if(d==20)
{
while(MinX < 320) //Så Strecken håller sig innanför fönstret.
{ // X-axel.
if(Nr+13 != 0)//Skriver ej ut siffran noll;
{
if(MinX+28 < 320)
{
if(Nr+13< 0)
g.drawString(""+(Nr+13), MinX+23,100); //Siffror vänster om y-axel
if(Nr+13 >0)
g.drawString(""+(Nr+13), MinX+28,70); //Siffror höger om y-axel
}
}
if(Ned ==5) //större streck var femte gång.
{
if(MinX+72<320)
g.drawLine(MinX+72,73,MinX+72, 89);//Ritar stora snedstreck..
Ned = 0; //var femte gång.
}
g.drawLine(MinX+12,76, MinX+12, 86);//Ritar små snedstreck på
MinX=MinX+20; //X-Axeln
Ned++;
Nr++;
}
Ned=5;
MinX=78;
Nr=-15;
while(MinY < 117)// Y-Axel...
{
if(Nr+18 != 0)//Skriver ej ut siffran noll;
{
if(Nr+18 < 0)
g.drawString(""+(Nr+18),130,MinY+13); //Siffror under x axel
if(Nr+18 >0)
g.drawString(""+(Nr+18),162,MinY+10); //Siffror över x axel
}
if (Ned==5)
{
if(MinY+67<117)
g.drawLine(142,MinY+67,158,MinY+67);//Ritar stora sned streck y-axel.
Ned = 0;
}
g.drawLine(145,MinY+7,155,MinY+7);//Ritar små sned streck
MinY = MinY+20; // på Y-axeln
Ned++;
Nr--;
}
MinY = 13;
}
g.setColor(Color.red);//Färgsätter linjen
if (X2==0) //Ritar ut rak linje
{
g.drawLine(PunktX1,PunktY1,PunktX2,PunktY2);//Dessa värden bestäms
} //i de olika Zoom lägena
if (X2==1)//Ritar ut kurva så att alla proportioner
{ //blir riktiga!!
double RotUr = R1;//Tilldelas värdet av Det inmatade X-värdet
int kl=0;
g.setColor(Color.red);
int kl2 =0;
PunktY1=(80-(R2));
for (double p=1; p<(68*8); p++)
{
/////////////////////////////////////
// ZOOMNORM //
/////////////////////////////////////
if (d==10)
{
double Xtwo=(p/RotUr);//Tilldelas värdet av räknaren "p"*inmatat X-värde
double nyX = Math.sqrt(Xtwo);//Roten ur
double xpix = Math.rint(nyX);//Avrundar till närmaste integer
int putpix;
putpix = (int)xpix;
if (kl2 == 8)
{
if(X1/10 > 0)// Ritar ut positiv kurva
{
if (MinY > (PunktY1-kl));// Sätter stopp vid fönstrets övre kant
{
g.setColor(Color.black);
g.drawString(".",(149-putpix),(PunktY1-kl));//Ritar ut punkter
g.drawString(".",(149+putpix),(PunktY1-kl));//vid angiven pixel
}
}
if(X1/10 < 0)// Ritar ut negativ kurva
{
if ((PunktY1+kl) < MaxY)//Sätter stopp vid föntrets nedre kant
{
g.drawString(".",(149-putpix),(PunktY1+kl));//Ritar ut punkter
g.drawString(".",(149+putpix),(PunktY1+kl));//vid angiven pixel
}
}
kl2 = 0;//Nollställer kl2, så att kl ökas var 8:e gång
kl++;
}
kl2++;
}
/////////////////////////////////////////////
// ZOOMOUT ------ //
/////////////////////////////////////////////
if (d==5)
{
PunktY1=(80-(R2/2));
double Xtwo=(p/RotUr);//Tilldelas värdet av räknaren "p"*inmatat X-värde
double nyX = Math.sqrt(Xtwo);//Roten ur
double xpix = Math.rint(nyX);//Avrundar till närmaste integer
int putpix;
putpix = (int)xpix;
if (kl2 == 8)
{
if(X1/10 > 0)// Ritar ut positiv kurva
{
if (MinY > (PunktY1-kl));// Sätter stopp vid fönstrets övre kant
{
g.setColor(Color.black);
g.drawString(".",(149-(putpix/2)),(PunktY1-(kl/2)));//Ritar ut punkter
g.drawString(".",(149+(putpix/2)),(PunktY1-(kl/2)));//vid angiven pixel
}
}
if(X1/10 < 0)// Ritar ut negativ kurva
{
if ((PunktY1+kl) < MaxY)//Sätter stopp vid föntrets nedre kant
{
g.drawString(".",(149-(putpix/2)),(PunktY1+(kl/2)));//Ritar ut punkter
g.drawString(".",(149+(putpix/2)),(PunktY1+(kl/2)));//vid angiven pixel
}
}
kl2 = 0;//Nollställer kl2, så att kl ökas var 8:e gång
kl++;
}
kl2++;
}
////////////////////////////////////////////
// ZOOMIN +++++ //
////////////////////////////////////////////
if (d==20)
{
PunktY1=(80-(R2*2));
double Xtwo=(p/RotUr);//Tilldelas värdet av räknaren "p"*inmatat X-värde
double nyX = Math.sqrt(Xtwo);//Roten ur
double xpix = Math.rint(nyX);//Avrundar till närmaste integer
int putpix;
putpix = (int)xpix;
if (kl2 == 8)
{
if(X1/10 > 0)// Ritar ut positiv kurva
{
if (MinY > (PunktY1-kl));// Sätter stopp vid fönstrets övre kant
{
g.setColor(Color.black);
g.drawString(".",(149-(putpix*2)),(PunktY1-(kl*2)));//Ritar ut punkter
g.drawString(".",(149+(putpix*2)),(PunktY1-(kl*2)));//vid angiven pixel
}
}
if(X1/10 < 0)// Ritar ut negativ kurva
{
if ((PunktY1+kl) < MaxY)//Sätter stopp vid föntrets nedre kant
{
g.drawString(".",(149-(putpix*2)),(PunktY1+(kl*2)));//Ritar ut punkter
g.drawString(".",(149+(putpix*2)),(PunktY1+(kl*2)));//vid angiven pixel
}
}
kl2 = 0;//Nollställer kl2, så att kl ökas var 8:e gång
kl++;
}
kl2++;
}
}
}
}
else if (Choice == 1)// Om du har valt att använda räknaren (box1)
{
g.setColor(Color.black);
g.fillRect(75,10,250,110);
}
}
public void actionPerformed(ActionEvent ae)
{
if (Choice == 1)
{
// Följande if-sats skriver ut i textfältet
if (ae.getSource()==btn1 ||ae.getSource()== btn2||
ae.getSource()==btn3 ||ae.getSource()== btn4||
ae.getSource()==btn5 ||ae.getSource()== btn6||
ae.getSource()==btn7 ||ae.getSource()== btn8||
ae.getSource()==btn9 ||ae.getSource()== btn0||
ae.getSource()==btnDecPoint)
{
TextField1.setText(clear);//Rensar textfältet när man
//skriver in nästa tal
if (ae.getSource()==btn1)
{
number=TextField1.getText();
TextField1.setText(number+"1");
}
if (ae.getSource()==btn2)
{
number=TextField1.getText();
TextField1.setText(number+"2");
}
if (ae.getSource()==btn3)
{
number=TextField1.getText();
TextField1.setText(number+"3");
}
if (ae.getSource()==btn4)
{
number=TextField1.getText();
TextField1.setText(number+"4");
}
if (ae.getSource()==btn5)
{
number=TextField1.getText();
TextField1.setText(number+"5");
}
if (ae.getSource()==btn6)
{
number=TextField1.getText();
TextField1.setText(number+"6");
}
if (ae.getSource()==btn7)
{
number=TextField1.getText();
TextField1.setText(number+"7");
}
if (ae.getSource()==btn8)
{
number=TextField1.getText();
TextField1.setText(number+"8");
}
if (ae.getSource()==btn9)
{
number=TextField1.getText();
TextField1.setText(number+"9");
}
if (ae.getSource()==btn0)
{
number=TextField1.getText();
TextField1.setText(number+"0");
}
if (ae.getSource()==btnDecPoint)
{
number=TextField1.getText();
TextField1.setText(number+".");
}
clear= TextField1.getText();//rensa nollställs när en
//en operator slås in
}
if (ae.getSource()==btnAdd)// Adderar ihop två tal och
// sätter raknesatt till 12. Detta tal används när man
// nästa gång trycker in + - * / eller =. Då adderas
// operand1 ihop med operand2.
{
number= "";
clear= number;
matte(raknesatt);
operand1 = TextField1.getText();
raknesatt= 12;
}
//------------------------------------------------------------------
//Nu kommer de olika operatorna
if (ae.getSource()==btnSub)// Subtraherar och sätter
// sätter räknesätt till 13
{
number= "";
clear= number;
matte(raknesatt);
operand1 = TextField1.getText();
raknesatt= 13;
}
if (ae.getSource()==btnMult)// Multiplicerar.
{
number= "";
clear= number;
if (raknesatt==16)
// Om man kommit hit så ser talet ut så här 4+3*5*
{
double op32 = StringToDouble(operand2);
double op33 = StringToDouble(TextField1.getText());
double op24 = op32*op33;
operand2= String.valueOf(op24);
TextField1.setText(operand2);
}
else if (raknesatt==17)
// Om man har kommit hit så ser det ut så här 4+3/5*
{
double op32 = StringToDouble(operand2);
double op33 = StringToDouble(TextField1.getText());
double op24 = op32/op33;
operand2= String.valueOf(op24);
TextField1.setText(operand2);
raknesatt=16;
if (raknesatt1==3)
{
raknesatt1=1;
}
if (raknesatt1==4)
{
raknesatt1=2;
}
}
else if (raknesatt==12)// Denna sats används om
// man först gjort en addition. tex 4+3*. Detta för att spara
//operand2 för att sedan utföra priotiteten 3* kommande tal.
{
operand2 = TextField1.getText();
raknesatt=16;
raknesatt1=1;
}
else if (raknesatt==13)// Denna sats används om
// man först gjort en addition. tex 4+3*. Detta för att spara
//operand2 för att sedan utföra priotiteten 3* kommande tal.
{
operand2 = TextField1.getText();
raknesatt=16;
raknesatt1=2;
}
else if (raknesatt==14 || raknesatt==15 || raknesatt==0)
/* Denna sats används både då man första gången trycker 5* för att
sätta raknesatt till 14 och andra gången man trycker då den räknar
ut. tex 6/4*. Den räknar då ut 6/4 eftersom raknesatt är
satt till 15. raknesatt 0 behövs för att man första gången skall
kunna komma in i satsen.*/
{
matte(raknesatt);
raknesatt=14;
operand1 = TextField1.getText();
}
}
if (ae.getSource()==btnDiv)// Division
{
number= "";
clear= number;
if (raknesatt==16)
// Om man kommer hit så ser talet så här 6+2*4/
{
double op32 = StringToDouble(operand2);
double op33 = StringToDouble(TextField1.getText());
double op24 = op32*op33;
operand2= String.valueOf(op24);
TextField1.setText(operand2);
raknesatt=17;
if (raknesatt1==1)
{
raknesatt1=3;
}
if (raknesatt1==2)
{
raknesatt1=4;
}
}
else if (raknesatt==17)
// Om man kommer hit så ser talet ut så här 4+3/4/
{
double op32 = StringToDouble(operand2);
double op33 = StringToDouble(TextField1.getText());
double op24 = op32/op33;
operand2= String.valueOf(op24);
TextField1.setText(operand2);
}
else if (raknesatt==12)
// Om man kommer hit så ser talet ut så här 7+4/ eller
// 7-3/
{
operand2 = TextField1.getText();
raknesatt=17;
raknesatt1=3;
}
else if (raknesatt==13)
{
operand2 = TextField1.getText();
raknesatt=17;
raknesatt1=4;
}
else if (raknesatt==14 || raknesatt==15 || raknesatt==0)
// Hit kommer man vid tex 5/, 5*6/ eller 7/9/
{
matte(raknesatt);
raknesatt=15;
operand1 = TextField1.getText();
}
}
if (ae.getSource() ==btnPow) // Räknar ut x upphöjt med y
{
number ="";
clear= number;
raknesatt=20;
operand1 = TextField1.getText();
}
if (ae.getSource()==btnSin)// Räknar ut sinusvärdet
{
number= "";
clear= number;
double op21 = StringToDouble(TextField1.getText());
double op22 = degToRad(op21);//Math.toRadians(op21);
op2=Math.sin(op22);
s2=String.valueOf(op2);
TextField1.setText(s2);
}
if (ae.getSource()==btnCos) // Räknar ut cosinusvärdet
{
number= "";
clear= number;
double op21 = StringToDouble(TextField1.getText());
double op22 = degToRad(op21);//Math.toRadians(op21);
op2=Math.cos(op22);
s2=String.valueOf(op2);
TextField1.setText(s2);
}
if (ae.getSource()==btnTan) // Räknar ut tangensvärdet
{
number= "";
clear= number;
double op21 = StringToDouble(TextField1.getText());
double op22 = degToRad(op21);//Math.toRadians(op21);
op2=Math.tan(op22);
s2=String.valueOf(op2);
TextField1.setText(s2);
}
if (ae.getSource()==btnSqr) // Räknar ut kvadraten
{
number= "";
clear= number;
double op21 = StringToDouble(TextField1.getText());
op2= op21*op21;
s2=String.valueOf(op2);
TextField1.setText(s2);
operand2 = TextField1.getText();
}
if (ae.getSource()==btnSqrt) // Räknar ut kvadratroten
{
number= "";
clear= number;
double op21 = StringToDouble(TextField1.getText());
op2= Math.sqrt(op21);
s2=String.valueOf(op2);
TextField1.setText(s2);
}
if (ae.getSource()==btnPerCent) // Räknar ut procent
{
number= "";
clear= number;
if(raknesatt==15)
{
op1 = StringToDouble(operand1);
op2 = StringToDouble(TextField1.getText());
res=op1/op2*100;
s2= String.valueOf(res);
TextField1.setText(s2);
}
raknesatt= 15;
}
if (ae.getSource()==btnPosOrNeg) // Ändrar talets plus eller minus
{
operand1= TextField1.getText();
double op3 = StringToDouble(operand1);
if (op3 > 0)
{
TextField1.setText("-"+operand1);
}
if (op3 < 0)
{
double op4= -1* op3;
String s4=String.valueOf(op4);
TextField1.setText(s4);
}
}
if (ae.getSource()==btnMS) //Placerar textfältets siffra i minnet
{
memory= TextField1.getText();
clear="";
}
if (ae.getSource()==btnMC) //Rensar minnet
{
memory="";
clear="";
}
if (ae.getSource()==btnMR) //Visar minnet i textfältet
{
TextField1.setText(memory);
clear="";
}
if (ae.getSource()==btnMemAdd)// Adderar siffran i textfältet
// med vad som finns i minnet
{
op1= StringToDouble(TextField1.getText());
op2= StringToDouble(memory);
double op3= op1+ op2;
memory = String.valueOf(op3);
//TextField1.setText(s2);
raknesatt=0;
}
if (ae.getSource()==btnPi) //Visar värdet PI
{
s2=String.valueOf(Math.PI);
TextField1.setText(s2);
}
if (ae.getSource()==btnEqual)// Räknar ut talet
{
if(raknesatt==12)
{
op1 = StringToDouble(operand1);
op2 = StringToDouble(TextField1.getText());
res=op1+op2;
}
if (raknesatt==13)
{
op1 = StringToDouble(operand1);
op2 = StringToDouble(TextField1.getText());
res=op1-op2;
}
if (raknesatt==14)
{
op1 = StringToDouble(operand1);
op2 = StringToDouble(TextField1.getText());
res=op1*op2;
}
if (raknesatt==15)
{
op1 = StringToDouble(operand1);
op2 = StringToDouble(TextField1.getText());
res=op1/op2;
}
if (raknesatt==16 || raknesatt==17)
{
if (raknesatt1==1)
{
op1 = StringToDouble(operand1);
op2 = StringToDouble(operand2);
op3 = StringToDouble(TextField1.getText());
res = op1+ op2* op3;
}
else if (raknesatt1==2)
{
op1 = StringToDouble(operand1);
op2 = StringToDouble(operand2);
op3 = StringToDouble(TextField1.getText());
res = op1- op2* op3;
}
else if (raknesatt1==3)
{
op1 = StringToDouble(operand1);
op2 = StringToDouble(operand2);
op3 = StringToDouble(TextField1.getText());
res = op1+ op2/ op3;
}
else if (raknesatt1==4)
{
op1 = StringToDouble(operand1);
op2 = StringToDouble(operand2);
op3 = StringToDouble(TextField1.getText());
res = op1- op2/ op3;
}
}
if (raknesatt==20)
{
op1 = StringToDouble(operand1);
//op2 = StringToDouble(operand2);
op2 = StringToDouble(TextField1.getText());
double op21= Math.pow(op1, op2);
res = op21;
}
TextField1.setText(clear);
s2= String.valueOf(res);
TextField1.setText(s2);
raknesatt=0;
}
if (ae.getSource() == btnAC)// Rensar sista talet
{
clear="";
TextField1.setText("0");
}
if (ae.getSource() == btnC)// Rensar allt
{
raknesatt=0;
number="";
operand1="";
operand2="";
operand3="";
clear="";
s2="";
op1=0;
op2=0;
res=0;
TextField1.setText(number);
}
}
//Slut på alla räknesätts knappar
//----------------------------------------------------------------
else if (Choice == 0)//om man klickat för grafen i radiobuttons
{ //får man tillgång till den if-slinga
if (ae.getSource() == btnZoomIn)
{
c=40; //Alla värden sätts så att
d=20; //proportionerna stämmer
e=10;
PunktX1=XZero; //150=0
PunktY1=(YZero-(Y1)*2); //80=0
PunktX2=(XZero-((Y1)/(X1/10))*2); //150=0
PunktY2=YZero; //80=0
String hej1 = new String(GraphText+" (+Zoom)");
TextField1.setText(hej1);
repaint();
}
else if(ae.getSource() == btnZoomOut)
{
c=80; //Alla värden sätts så att
d=5; //proportionerna stämmer
e=0;
PunktX1=XZero; //150=0
PunktY1=(YZero-(Y1)/2); //80=0
PunktX2=(XZero-((Y1)/(X1/10))/2); //150=0
PunktY2=YZero; //80=0
String hej2 = new String(GraphText+" (-Zoom)");
TextField1.setText(hej2);
repaint();
}
else if(ae.getSource() == btnNorm)
{
c=40; //Värden ställs till "ursprungs" värde
d=10;
e=0;
PunktX1=XZero; //150=0
PunktY1=(YZero-(Y1)); //80=0
PunktX2=(XZero-((Y1)/(X1/10))); //150=0
PunktY2=YZero; //80=0
String hej3 = new String(GraphText+" (normalZoom)");
TextField1.setText(hej3);
repaint();
}
if(ae.getSource()==btnClear)
{
NumberValue=0; //Alla variablar som används nollställs
NumberXValue = 0;
NumberYValue = 0;
XValue="";
YValue="";
XOrYValue=0;
PlusOrMinus=3; //Sätts till 3 för att inte något av
XPlusOrMinus=0; //plus eller minus teck. ska ligga och spöka
X1=0;
Y1=0;
X2=0;
PunktX1=0;
PunktX2=0;
PunktY1=0;
PunktY2=0;
GraphText=("Graph Y = ");
TextField1.setText(GraphText);
repaint();
}
if(XOrYValue==0)
{
if (ae.getSource()==btnSub)
{
XPlusOrMinus = 1;
ClearText="-";
GraphText=GraphText+"-";
TextField1.setText(ClearText);
}
if (ae.getSource()==btnAdd)
{
XPlusOrMinus = 0;
ClearText="+";
GraphText=GraphText+"+";
TextField1.setText(ClearText);
}
if(ae.getSource()==btn0)
{
GraphText=GraphText+"0";
ClearText="0";
TextField1.setText(ClearText);
XValue=XValue+(TextField1.getText());//XValue får värdet av det som
} //som står i textfältet plus
if(ae.getSource()==btn1) //det värdet som finns i XValue
{
GraphText=GraphText+"1";
ClearText="1";
TextField1.setText(ClearText);
XValue = XValue+(TextField1.getText());
}
if(ae.getSource()==btn2)
{
GraphText=GraphText+"2";
ClearText="2";
TextField1.setText(ClearText);
XValue = XValue+(TextField1.getText());
}
if(ae.getSource()==btn3)
{
GraphText=GraphText+"3";
ClearText="3";
TextField1.setText(ClearText);
XValue = XValue+(TextField1.getText());
}
if(ae.getSource()==btn4)
{
GraphText=GraphText+"4";
ClearText="4";
TextField1.setText(ClearText);
XValue = XValue+(TextField1.getText());
}
if(ae.getSource()==btn5)
{
GraphText=GraphText+"5";
ClearText="5";
TextField1.setText(ClearText);
XValue = XValue+(TextField1.getText());
}
if(ae.getSource()==btn6)
{
GraphText=GraphText+"6";
ClearText="6";
TextField1.setText(ClearText);
XValue = XValue+(TextField1.getText());
}
if(ae.getSource()==btn7)
{
GraphText=GraphText+"7";
ClearText="7";
TextField1.setText(ClearText);
XValue = XValue+(TextField1.getText());
}
if(ae.getSource()==btn8)
{
GraphText=GraphText+"8";
ClearText="8";
TextField1.setText(ClearText);
XValue = XValue+(TextField1.getText());
}
if(ae.getSource()==btn9)
{
GraphText=GraphText+"9";
ClearText="9";
TextField1.setText(ClearText);
XValue = XValue+(TextField1.getText());
}
try
{
NumberXValue = Integer.parseInt(XValue);//NumberXValue får värdet av det
} //som man matat in innan man trycker
//på X eller X2
catch(Exception nfe)
{
}
}
if(ae.getSource()==btnX)
{
GraphText=GraphText+"X";
ClearText="X";
TextField1.setText(ClearText);
XOrYValue=1; //Kommer sedan att medela om det är en linje eller
} //om det är en 2:a grads ekvation
if(XOrYValue==1)
{
if (ae.getSource()==btnSub)
{
PlusOrMinus = 1;//Kommer sedan att tala om ifall det blir ett positivt
GraphText=GraphText+"-";//eller negativt värde
ClearText="-";
TextField1.setText(ClearText);
}
if(ae.getSource()==btnAdd)
{
PlusOrMinus = 0;//Se förklaring på btnSub
GraphText=GraphText+"+";
ClearText="+";
TextField1.setText(ClearText);
}
if(ae.getSource()==btn0)
{
GraphText=GraphText+"0";
ClearText="0";
TextField1.setText(ClearText);
YValue=YValue+(TextField1.getText());//YValue får värdet av det som
} //som finns i textfältet plus
if(ae.getSource()==btn1) //det som redan ligger i YValue
{
GraphText=GraphText+"1";
ClearText="1";
TextField1.setText(ClearText);
YValue=YValue+(TextField1.getText());
}
if(ae.getSource()==btn2)
{
GraphText=GraphText+"2";
ClearText="2";
TextField1.setText(ClearText);
YValue=YValue+(TextField1.getText());
}
if(ae.getSource()==btn3)
{
GraphText=GraphText+"3";
ClearText="3";
TextField1.setText(ClearText);
YValue=YValue+(TextField1.getText());
}
if(ae.getSource()==btn4)
{
GraphText=GraphText+"4";
ClearText="4";
TextField1.setText(ClearText);
YValue=YValue+(TextField1.getText());
}
if(ae.getSource()==btn5)
{
GraphText=GraphText+"5";
ClearText="5";
TextField1.setText(ClearText);
YValue=YValue+(TextField1.getText());
}
if(ae.getSource()==btn6)
{
GraphText=GraphText+"6";
ClearText="6";
TextField1.setText(ClearText);
YValue=YValue+(TextField1.getText());
}
if(ae.getSource()==btn7)
{
GraphText=GraphText+"7";
ClearText="7";
TextField1.setText(ClearText);
YValue=YValue+(TextField1.getText());
}
if(ae.getSource()==btn8)
{
GraphText=GraphText+"8";
ClearText="8";
TextField1.setText(ClearText);
YValue=YValue+(TextField1.getText());
}
if(ae.getSource()==btn9)
{
GraphText=GraphText+"9";
ClearText="9";
TextField1.setText(ClearText);
YValue=YValue+(TextField1.getText());
}
try
{
NumberYValue = Integer.parseInt(YValue);//NumberYValue får värdet av
} //det som matats in i YValue
catch(Exception nfe)
{
}
}
if(ae.getSource()==btnSqr)
{
GraphText=GraphText+"X\u00B2";
ClearText="X\u00B2";
TextField1.setText(ClearText);
XOrYValue=1;// se förklaring på btnX
X2 = 1;
}
if(ae.getSource()==btnGraph)
{
if(PlusOrMinus==1)//Styr Y-värdet till negativt
{
Y1=-(NumberYValue*10);
R2=-(NumberYValue*10);
}
else //Styr Y-värdet till positivt
{
Y1=(NumberYValue*10);
R2=(NumberYValue*10);//Används av 2:a gradsekvationen
}
if(XPlusOrMinus==1)//Styr X-värdet till negativt
{
X1=-(NumberXValue*10);
R1=NumberXValue;//Används av 2:a gradsekvationen
}
else //Styr X-värdet till positivt
{
X1=(NumberXValue*10);
R1=NumberXValue;
}
//Nedanstående syntax ger oss möljigheten att skriva ut
//var linjen skär Y respektive X - axeln
//String s1=new String(""+X1);//Skapar en string som
//String s2=new String(""+Y1);//innehåller värdet av
//Double d1=Double.valueOf(s1);//X1, respektive Y1
//Double d2=Double.valueOf(s2);//Omvandlas till
//double d3=d1.doubleValue();// Double objekt
//double d4=d2.doubleValue();//Omvandlas till typen double
//Detta görs för att kunna skriva
//ut punkterna med en decimal
//GraphText=GraphText+" (0,"+Y1/10+")("+(-(d4/d3))+",0)";
TextField1.setText(GraphText);
c=40; //Ställer in allt för normalt läge
d=10; //
e=0; //
PunktX1=XZero; //150=0
PunktY1=(YZero-(Y1)); //80=0
PunktX2=(XZero-((Y1)/(X1/10))); //150=0
PunktY2=YZero; //80=0
if (X2==1)
{
PunktX1=XZero; //
PunktY1=YZero; //Max,Min punkten i kurvan
}
repaint();
}
}
}
public double StringToDouble(String op)
{
double op1;
Double op21 = new Double(op);
op1 = op21.doubleValue();
return op1;
}
public void matte(int raknesatt1)
{
if(raknesatt==12)
{
op1 = StringToDouble(operand1);
op2 = StringToDouble(TextField1.getText());
res=op1+op2;
s2= String.valueOf(res);
TextField1.setText(s2);
}
if(raknesatt==13)
{
op1 = StringToDouble(operand1);
op2 = StringToDouble(TextField1.getText());
res=op1-op2;
s2= String.valueOf(res);
TextField1.setText(s2);
}
if(raknesatt==14)
{
op1 = StringToDouble(operand1);
op2 = StringToDouble(TextField1.getText());
res=op1*op2;
s2= String.valueOf(res);
TextField1.setText(s2);
}
if(raknesatt==15)
{
op1 = StringToDouble(operand1);
op2 = StringToDouble(TextField1.getText());
res=op1/op2;
s2= String.valueOf(res);
TextField1.setText(s2);
}
}
public void itemStateChanged(ItemEvent e)
{
if (e.getSource() == box1)
{
TextField1.setText("Tryck På Rensa");
Choice=0;//Gör så att man kommer in till funktionerna för grafen
}
else if (e.getSource() == box2)
{
TextField1.setText("Du har valt räknare");
Choice=1;
}
}
public double degToRad(double deg)
{
double temp = (Math.PI / 180) * deg;
return temp;
}
}