Está en la página 1de 12

Esto en plan practico no tiene gran utilidad, sin embargo como ejemplo didactico

si  , ya que utiliza el visor de eventos ActionListener y la interfaz


grafica Swing, por lo menos creo que a los que empiezan con Java les ayudara un
poco como guia   , despues escribire algo sobre Java ^^ .

Resultado:

CÓDIGO

/**
* Simple Calculator
*
* Developed by Marioly Garza

*/

package calculadora;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Calculadora extends JFrame implements ActionListener  {

    boolean nuevo = true;


    float   resultado_total = 0.0f;
    String  ultimo = "=";
    Label pantalla = null;
    Button b;
    JPanel panel, panel2;

    public Calculadora() {
        setTitle("Calculadora");

        setSize(200, 200);

        Pantalla();

        Teclado();
   }

   private void Pantalla() {

        panel = new JPanel();


        panel.setLayout(new GridLayout(1, 1));
        pantalla = new Label();
        pantalla.setText("0");
        pantalla.setAlignment(Label.RIGHT);
        pantalla.setForeground(Color.black);
        pantalla.setBackground(Color.white);

        panel.add(pantalla);
        add("North", panel);
   }

    public void Teclado () {


        panel2 = new JPanel();
        panel2.setLayout(new GridLayout(4, 4));

        addBoton("7", Color.blue);
        addBoton("8", Color.blue);
        addBoton("9", Color.blue);
        addBoton("/", Color.red);
        addBoton("C", Color.red);

        addBoton("4", Color.blue);
        addBoton("5", Color.blue);
        addBoton("6", Color.blue);
        addBoton("*", Color.red);
        addBoton("sqrt", Color.red);

        addBoton("1", Color.blue);
        addBoton("2", Color.blue);
        addBoton("3", Color.blue);
        addBoton("-", Color.red);
        addBoton("AC", Color.red);

        addBoton("0", Color.blue);
        addBoton("+/-", Color.red);
        addBoton(".", Color.red);
        addBoton("+", Color.red);
        addBoton("=", Color.red);

        add("Center", panel2);
  }

  private void addBoton(String n, Color color) {


       b = new Button(n);

       b.setForeground(color);

       panel2.add(b);

       b.addActionListener( this );


  }

  public void actionPerformed(ActionEvent event) {

        String digit   = event.getActionCommand();


        String s     = pantalla.getText();

        // Logic based in a source of Santiago Pavón

        float  valor = 0;
        try {
            valor = new Float(s).floatValue();
        } catch (Exception e) {
            if (!digit.equals("C")) return;
        }

        if ("0123456789".indexOf(digit) != -1) {

            if (nuevo) {
                nuevo = false;
                pantalla.setText(digit);
            } else {
                pantalla.setText(s + digit);
            }

        } else if (digit.equals(".")) {

            if (nuevo) {
                nuevo = false;
                pantalla.setText("0.");
            } else {
                pantalla.setText(s + digit);
            }

        } else if (digit.equals("sqrt")) {

            valor = (float)Math.sqrt(valor);
            pantalla.setText(String.valueOf(valor));
            nuevo = true;

        } else if (digit.equals("+/-")) {

            valor = -valor;
            pantalla.setText(String.valueOf(valor));
            nuevo = true;

        } else if (digit.equals("C")) {

            resultado_total  = 0;
            pantalla.setText("0");
            ultimo = "=";
            nuevo = true;

        } else {

            char c = ultimo.charAt(0);

            switch (c) {
                case '=': resultado_total  = valor; break;
                case '+': resultado_total += valor; break;
                case '-': resultado_total -= valor; break;
                case '*': resultado_total *= valor; break;
                case '/': resultado_total /= valor; break;
            }
      ultimo = digit;
      nuevo = true;
      pantalla.setText(String.valueOf(resultado_total));
  }
}
public static void main(String[] args) {
  Calculadora cal = new Calculadora();
  cal.show();
}
}

 2,755

MENSAJES

SPIELMEISTERescribió el 16/10/2007 a las 12:46 hs.¿Mensaje inapropiado?


#2 Re: ayuda con calculadora y eventos.
A ver.....

Digamos que vos tenes un applet codificado de la siguiente forma:

Código:
public class CalculadoraApplet extends JApplet implements
ActionIListener {

private JButton boton1 = new JButton("1");


private JButton boton2 = new JButton("2");
private JTextField campo = new JTextField();

public CalculadoraApplet() {
inicializarApplet();
}

private void inicializarApplet() {


getContentPane().add(boton1);
getContentPane().add(boton2);
getCotnentPane().add(campo);

boton1.addActionListener(this);
boton2.addActionListener(this);
}

public void actionPerformed(ActionEvent event) {


if (event.getSource() == boton1) {
campo.setText("1");
}
if (event.getSource() == boton2) {
campo.setText("2");
}
}
}
Bueno mas o menos asi es el codigo
Main.java
01 /*
02  * Ejercicio: Calculadora sencilla
03  *   - Implementar la Interfaz de usuario
 *   - Implementar los métodos siguientes a través de los listeners
04
adecuados:
05  *          - Sumar
06  *          - Restar
07  *          - Multiplicar
08  *          - Dividir
09  */
10  
11 package calculadora;
12  
13 /**
14  *
15  * @author: $Author: franchux $
16  * @version: $Rev: 70 $
17  * @date: $Date: 2009-04-13 13:06:00 +0200 (lun 13 de abr de 2009) $
18  * $Id: Main.java 70 2009-04-13 11:06:00Z franchux $
19  */
20 public class Main {
21  
22     /**
23      * @param args the command line arguments
24      */

25     public static void main(String[] args) {
26         // TODO code application logic here
27         VentanaCalculadora calculadora = new VentanaCalculadora();

28         calculadora.setVisible(true);
29     }
30  
31 }
VentanaCalculadora.java
001 /*
002  * Interfaz para nuestra calculadora sencilla
003  */
004 package calculadora;
005  
006 import java.awt.*;
007 import java.awt.event.MouseAdapter;
008 import java.awt.event.MouseEvent;

009  
010 import javax.swing.*;
011 import javax.swing.border.EmptyBorder;
012  
013 /**
014  *
015  * @author: $Author: franchux $
016  * @version: $Rev: 75 $
 * @date: $Date: 2009-04-14 00:21:18 +0200 (mar 14 de abr de 2009)
017
$
018  * $Id: VentanaCalculadora.java 75 2009-04-13 22:21:18Z franchux $

019  */
020 public class VentanaCalculadora extends JFrame {
021  
022     /** numero tecleado */
023     JTextField pantalla;
024  
    /** guarda el resultado de la operacion anterior o el número
025
tecleado */
026     double resultado;

027  
028     /** para guardar la operacion a realizar */
029     String operacion;
030  
031     /** Los paneles donde colocaremos los botones */
032     JPanel panelNumeros, panelOperaciones;

033  
034     /**  Indica si estamos iniciando o no una operación */
035     boolean nuevaOperacion = true;
036  
037     /**
     * Constructor. Crea los botones y componentes de la
038
calculadora
039      */
040     public VentanaCalculadora() {
041         super();
042         setSize(250, 300);
043         setTitle("Calculadora Simple");
044         setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
045         setResizable(false);
046  
047         // Vamos a dibujar sobre el panel
048         JPanel panel = (JPanel) this.getContentPane();
049         panel.setLayout(new BorderLayout());
050  

051         pantalla = new JTextField("0", 20);


052         pantalla.setBorder(new EmptyBorder(4, 4, 4, 4));
053         pantalla.setFont(new Font("Arial", Font.BOLD, 25));
054         pantalla.setHorizontalAlignment(JTextField.RIGHT);
055         pantalla.setEditable(false);
056         pantalla.setBackground(Color.WHITE);
057         panel.add("North", pantalla);
058  
059         panelNumeros = new JPanel();
060         panelNumeros.setLayout(new GridLayout(4, 3));
061         panelNumeros.setBorder(new EmptyBorder(4, 4, 4, 4));
062  
063         for (int n = 9; n >= 0; n--) {
064             nuevoBotonNumerico("" + n);
065         }
066  
067         nuevoBotonNumerico(".");
068  
069         panel.add("Center", panelNumeros);
070  
071         panelOperaciones = new JPanel();
072         panelOperaciones.setLayout(new GridLayout(6, 1));
073         panelOperaciones.setBorder(new EmptyBorder(4, 4, 4, 4));
074  
075         nuevoBotonOperacion("+");
076         nuevoBotonOperacion("-");
077         nuevoBotonOperacion("*");
078         nuevoBotonOperacion("/");
079         nuevoBotonOperacion("=");
080         nuevoBotonOperacion("CE");
081  
082         panel.add("East", panelOperaciones);
083  
084         validate();
085     }
086  

087     /**
     * Crea un boton del teclado numérico y enlaza sus eventos con
088
el listener correspondiente
089      *
090      * @param digito boton a crear
091      */
092     private void nuevoBotonNumerico(String digito) {
093             JButton btn = new JButton();
094             btn.setText(digito);

095             btn.addMouseListener(
096                     new MouseAdapter() {
097  
098                         @Override
099                         public void mouseReleased(MouseEvent evt) {
                            JButton btn = (JButton)
100
evt.getSource();
101                             numeroPulsado(btn.getText());
102                         }
103                     });
104  
105             panelNumeros.add(btn);
106  
107     }
108  

109     /**
110      * Crea un botón de operacion y lo enlaza con sus eventos.
111      *
112      * @param operacion
113      */
114     private void nuevoBotonOperacion(String operacion) {
115         JButton btn = new JButton(operacion);
116         btn.setForeground(Color.RED);

117  
118         btn.addMouseListener(
119                 new MouseAdapter() {
120  
121                     @Override
122                     public void mouseReleased(MouseEvent evt) {
123                         JButton btn = (JButton) evt.getSource();
124                         operacionPulsado(btn.getText());
125                     }
126                 });

127  
128         panelOperaciones.add(btn);
129     }
130  

131     /**
132      * Gestiona las pulsaciones de teclas numéricas
133      *
134      * @param digito tecla pulsada
135      */
136     private void numeroPulsado(String digito) {
137         if (pantalla.getText().equals("0") || nuevaOperacion) {
138             pantalla.setText(digito);

139         } else {


140             pantalla.setText(pantalla.getText() + digito);
141         }
142         nuevaOperacion = false;
143     }
144  

145     /**
146      * Gestiona el gestiona las pulsaciones de teclas de operación
147      * @param tecla
148      */
149     private void operacionPulsado(String tecla) {
150         if (tecla.equals("=")) {

151             calcularResultado();
152         } else if(tecla.equals("CE")) {
153             resultado = 0;
154             pantalla.setText("");
155             nuevaOperacion = true;
156         } else {

157             operacion = tecla;


158             if((resultado > 0) && !nuevaOperacion) {
159                 calcularResultado();
160             } else {
161                 resultado = new Double(pantalla.getText());
162             }
163         }
164  
165         nuevaOperacion = true;
166     }
167  
168     /**
169      * Calcula el resultado y lo muestra por pantalla
170      */

171     private void calcularResultado() {

172         if (operacion.equals("+")) {

173             resultado += new Double(pantalla.getText());

174         } else if (operacion.equals("-")) {

175             resultado -= new Double(pantalla.getText());

176         } else if (operacion.equals("/")) {

177             resultado /= new Double(pantalla.getText());

178         } else if (operacion.equals("*")) {

179             resultado *= new Double(pantalla.getText());

180         }

181  
182         pantalla.setText("" + resultado);
183         operacion = "";
184     }
185 }
/**
* Write a description of class calculadora here.
*
* @author javiergal
* @version (30/06/2005)
*/
//librerias
import javax.swing.*;
import java.awt.event.*;//para manejar eventos
import java.awt.*;

//inicio clase
class frame extends JFrame{

//el constuctor
public frame(){
//Este es uno de los métodos que nuestra clase frame ha
//heredado de JFrame. Pone un título a la ventana
setTitle("Calculadora");
//Igual que el anterior, pero le esta vez le da un tamaño
setSize(300,500);
//Le indicamos al frame quien será su manejador de eventos de
//ventana: un objeto de tipo manejador que creamos en esta
misma línea
addWindowListener (new manejador());
//Le pido al frame su objeto contenedor
Container container = getContentPane();
//Creo un objeto de tipo JPanel pantalla que contentra el
visor
JPanel pantalla = new JPanel();
//creo un objeto de tipo JPanel teclado que contendra los
botones
JPanel teclado = new JPanel();
//creo un objeto de tipo JTextField visor que mostrará los
números y las operaciones
JTextField visor = new JTextField(20);
//ubicacion segun se creen los botones
FlowLayout fl = new FlowLayout(FlowLayout.LEFT, 5,50);
//agregó el FlowLayout al teclado
teclado.setLayout(fl);

// for (int i = 0; i < 9; i++) {


//creo un objeto de tipo JButton button con el nombre "i"
que es el número
//que enviará al visor cuando le de click
JButton button = new JButton("hola");// + (i + 1));
//le indico al boton quien será su manejador de eventos
button.addActionListener(new Clic());
//indico al boton su tamaño
button.setPreferredSize(new Dimension(100,25));
//agrego el boton "i" al teclado
teclado.add(button);
// }

//agrego el visor a la pantalla


pantalla.add(visor);
//agrego la pantalla al contenedor y la ubico en la parte
norte del frame(arriba)
container.add(pantalla,"North");
//agrego el teclado al contenedor y lo ubico en parte central
del frame
container.add(teclado,"Center");
//indico color de fondo de la pantalla y el teclado
pantalla.setBackground(Color.blue);
teclado.setBackground(Color.red);

}
}

class Clic implements ActionListener{


public JTextField visor;
public void actionPerformed(ActionEvent e){
visor.setText("Hola");
}
}

class manejador extends WindowAdapter{


public void windowClosing(WindowEvent e){
System.out.println("sali");
System.exit(0);
}
}

public class calculadora


{
public static void main (String[] args){
JFrame t = new frame();
t.show();
}
}

También podría gustarte