Vous êtes sur la page 1sur 14

Java: Calculadora sencilla en

modo gráfico
Esta es una calculadora sencilla en modo gráfico escrita en Java.

Implementa las operaciones básicas: sumar, restar, multiplicar y dividir

Main.java

view source

print?

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

/*

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 }

Etiquetas: ejercicios, Java

Vous aimerez peut-être aussi