Hallo,
Ik heb een simpele calculator applet die wel werkt, maar nu is mijn vraag hoe ik de hele som kan laten staan in het scherm.
dus als ik het eerste getal aanklik een functie en dan het tweede getal, verdwijnt het eerste getal en de functie komt niet eens in beeld.
Ik wil dus dat de hele som in beeld blijft staan zodat je kan zien wat je aan hebt geklikt!
Alvast bedankt!
Rob
Ik heb een simpele calculator applet die wel werkt, maar nu is mijn vraag hoe ik de hele som kan laten staan in het scherm.
dus als ik het eerste getal aanklik een functie en dan het tweede getal, verdwijnt het eerste getal en de functie komt niet eens in beeld.
Ik wil dus dat de hele som in beeld blijft staan zodat je kan zien wat je aan hebt geklikt!
Code:
package lator;
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class Calc extends Applet implements ActionListener
{
Label result;
Panel knoppen;
Proc proc;
public void init()
{
Button knop;
String opschrift;
proc = new Proc();
result = new Label("0", Label.RIGHT);
knoppen = new Panel();
result.setFont(new Font("Arial", Font.BOLD, 20));
this.setLayout(new BorderLayout());
knoppen.setLayout(new GridLayout(4,4,6,6));
for(int n=0; n<16; n++)
{
opschrift = "789/456*123+0C=-".substring(n,n+1);
knop = new Button(opschrift);
knop.addActionListener(this);
knoppen.add(knop);
}
this.add(result, BorderLayout.NORTH);
this.add(knoppen, BorderLayout.CENTER);
}
public void actionPerformed(ActionEvent e)
{
Button b;
char c;
b = (Button) (e.getSource());
c = b.getLabel().charAt(0);
if (c=='C')
proc.schoon();
else if (c=='=')
proc.reken();
else if (c>='0' && c<='9')
proc.cijfer(c-'0');
else
proc.operatie(c);
result.setText(""+proc.scherm);
}
private static final long serialVersionUID = 1L;
}
Code:
public class Proc
{
long waarde, vorige, scherm;
char operator;
Proc()
{
schoon();
}
void schoon()
{
waarde = 0;
vorige = 0;
operator = '+';
scherm = 0;
}
void reken()
{
switch(operator)
{
case '+': vorige += waarde; break;
case '-': vorige -= waarde; break;
case '*': vorige *= waarde; break;
case '/': vorige /= waarde; break;
}
scherm = vorige;
waarde = 0;
}
void cijfer (int n)
{
waarde = 10*waarde+n;
scherm = waarde;
}
void operatie(char c)
{
reken();
operator = c;
}
}
Alvast bedankt!
Rob