import java.awt.*;
import java.awt.event.*;

public class Recuento
	extends Frame
	implements ActionListener
{
//declarar componentes
//--------------------
int
	votosA = 0,
	votosB = 0;
Label 
	LvotosA = new Label("0"),
	porcA = new Label("0.0%"),
	LvotosB = new Label("0"),
	porcB = new Label("0.0%"); // También se pueden usar campos de texto
Button 
	A = new Button("cand. A"),
	B = new Button("cand. B");

//programa principal
//------------------
// (aquí lo importante es que pongan el pack y show, pero también
// pueden hacerlo en el constructor).
static public void main(String[] args)
{
	Recuento r = new Recuento();
	r.pack();
	r.show();
}
//constructor
//-----------
public Recuento()
{
	setLayout(new GridLayout(1,6));	//opcional, (también puede ser FlowLayout)

	add(A); add(LvotosA); add(porcA);
	add(B); add(LvotosB); add(porcB);
	
	A.addActionListener(this); B.addActionListener(this);
}
//atencion de botones:
//--------------------
//encabezamiento
// (también puede ser un actionListener para cada botón y en ese caso
// no necesita hacer x.getSource())
public void actionPerformed(ActionEvent x)
{
	//distinguir boton
	if( x.getSource() == A )
	{
		//procesar voto para candidato A

		//actualizar votos
		++votosA;
		LvotosA.setText(votosA + "");

		//actualizar porcentajes
		int t = votosA + votosB;
		porcA.setText(100*votosA/t + "%");
		porcB.setText(100*votosB/t + "%");
	}
	else if( x.getSource() == B )
	{
		//procesar voto para candidato B

		//actualizar votos
		++votosB;
		LvotosB.setText(votosB + "");

		//actualizar porcentajes
		int t = votosA + votosB;
		porcA.setText(100*votosA/t + "%");
		porcB.setText(100*votosB/t + "%");
	}
}
}
