Usuario:ManuelRomero/interfaz

De WikiEducator
< Usuario:ManuelRomero
Revisión a fecha de 11:41 4 may 2012; ManuelRomero (Discusión | contribuciones)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

VentanaCalculadora

Es la clase gráfica Lleva un atributo de tipo de calculadora Gestion las acciones gráficas Es interesanten tener encuenta como interactual con otras clases

Character entrada = ((JButton)e.getSource()).getText().charAt(0);
		estado.setTipo(this.modoOperacion);
		estado.actualizaEstado(entrada,tPantalla.getText(),accion,modoOperacion);
 
		tPantalla.setText(accion.getResultado());
		//tPantalla.setText(tPantalla.getText()+entrada);

Código

package calculadora;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
 
 
 
public class VentanaCalculadora extends JFrame implements ActionListener{
 
	//Estdo de operacion de la calculadora
	final int REAL =0;
	final int RACIONAL = 1;
 
	EstadoCalculadora estado = new EstadoCalculadora();
	AccionCalculadora accion = new AccionCalculadora();
 
	int modoOperacion ;
 
	JButton bDiv = new JButton();
	JButton bSep = new JButton();
 
	//	Definimos atributos de mi clase
	JTextField tPantalla = new JTextField();
 
	//Definimos botones
	Character [] botones ={'7','8','9','C',(char)8592, //Caracter retroceso
			   '4','5','6','+','%',
			   '1','2','3','-',(char)177,//caracter +/-
			   '0','*','/','.','='};
 
 
	Font fuente = new Font("Arial", Font.BOLD,18);
 
	GridLayout lBotones = new GridLayout(4,5,5,5);
	BorderLayout lPpal = new BorderLayout();
 
	JPanel pBotones = new JPanel();
 
	//Menus
	JMenuBar barraMenu = new JMenuBar();
	JMenu mEstilo = new JMenu("Estilo");
	JMenu mAyuda = new JMenu("Ayuda");
	JMenu mSalir = new JMenu("Salir");
	private int tipo; //Para saber como interpretar las entradas
 
	JRadioButtonMenuItem  bRacional = new JRadioButtonMenuItem("Racionall");
	JRadioButtonMenuItem  bReal = new JRadioButtonMenuItem("Real");
 
	ButtonGroup grupo = new ButtonGroup();
 
	VentanaCalculadora(){
		addBotones();
		addMenu();
 
		setJMenuBar(barraMenu);
 
		modoOperacion=REAL;
		setTitle("Calculadora Real");
 
 
		setLayout(lPpal);
		tPantalla.setHorizontalAlignment(JTextField.RIGHT);
		tPantalla.setFont(fuente);
 
 
		add(tPantalla,BorderLayout.NORTH);
		add(pBotones, BorderLayout.CENTER);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
		pack();
	}
 
	private void addMenu(){
		barraMenu.add(mEstilo);
		barraMenu.add(mAyuda);
 
		barraMenu.add(mSalir);
 
		//Añadir escuchadores de evento a los botones
		bReal.addActionListener(this);
		bRacional.addActionListener(this);
 
 
		grupo.add(bRacional);
		grupo.add(bReal);
 
		bReal.setSelected(true);
 
		mEstilo.add(bRacional);
		mEstilo.add(bReal);
 
 
 
 
 
	}
	private void addBotones(){
 
		pBotones.setLayout(lBotones);
 
		for (int i=0;i<20;i++){
 
			JButton b = new JButton(botones[i].toString());
			b.setFont(fuente);
			b.addActionListener(this);
			pBotones.add(b);
			if (i==17){
				bDiv=b;
			}
			if (i==18){
				bSep=b;
			}
 
 
		}
	}
 
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() ==bReal){
			modoOperacion=REAL;
			setTitle("Calculadora Real");
			bDiv.setText("/");
			bSep.setText(".");
			estado.setTipo(this.modoOperacion);
			estado.inicializa(accion);
			tPantalla.setText(accion.getResultado());
		}else 
		if (e.getSource() ==bRacional){
			modoOperacion=RACIONAL;	
			setTitle("Calculadora Racional");
			bDiv.setText(":");
			bSep.setText("/");
			estado.setTipo(this.modoOperacion);
			estado.inicializa(accion);
			tPantalla.setText(accion.getResultado());
		}else{			
			Character entrada = ((JButton)e.getSource()).getText().charAt(0);
			estado.setTipo(this.modoOperacion);
			estado.actualizaEstado(entrada,tPantalla.getText(),accion,modoOperacion);
 
			tPantalla.setText(accion.getResultado());
			//tPantalla.setText(tPantalla.getText()+entrada);
		}
	}
public static void main (String []s){
	VentanaCalculadora v  = new VentanaCalculadora();
}
 
}