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; } }