Vraag over calculator applet

  • Onderwerp starter Onderwerp starter Jorob
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Jorob

Nieuwe gebruiker
Lid geworden
3 jan 2013
Berichten
1
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!


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
 
Het makkelijkste is om een lege String toe te voegen en deze in ActionPerfomed steeds aan te vullen met de aangeklikte knop (variabele 'c').
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan