elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Necesito ayuda para mi Calculadora (usando la libreria Swing)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Necesito ayuda para mi Calculadora (usando la libreria Swing)  (Leído 8,986 veces)
DarkSorcerer

Desconectado Desconectado

Mensajes: 69



Ver Perfil
Necesito ayuda para mi Calculadora (usando la libreria Swing)
« en: 31 Enero 2013, 09:24 am »

Me anime a programar una calculadora sencilla, se trata de 2 campos de textos donde se ingresa el numero, abajo hay 5 botones, hay para sumar, restar, multiplicar y dividir, mas un boton adicional para borrar todo, los resultados de las operaciones se muestra en un campo inmodificable, pero mi problema es que para que pueda guardar los numeros a operar, hay que apretar el boton Enter  y lo que yo busco es que cuando el usuario escribe el numero en los campos, no tenga que acudir al enter, solo es llegar y escribir los numeros y clickear el boton de la operacion deseada.

Yo estoy leyendo el libro de Deitel 7ma edicion si es que alguien lo leyo para que me pueda ayudar y les dejo mi codigo, yo programé una clase que se llama Calculadora y que hereda todo de JFrame. Por si acaso, estoy usando el Netbeans 7.2


Les dejo la clase calculadora


package ejercicio109;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Calculadora extends JFrame {
   
    private JLabel etiqueta1;
    private JLabel etiqueta2;
    private JLabel etiqueta3;
   
    private JTextField campo1;
    private JTextField campo2;
    private JTextField campo3;
   
    private JButton botonSuma;
    private JButton botonResta;
    private JButton botonProducto;
    private JButton botonDivision;
    private JButton botonBorrar;
   
    private int numero1;
    private int numero2;
    private int resultado;
   
    public Calculadora(){
       
        super("CALCULADORA SIMPLE");
        setLayout(new FlowLayout());
       
        etiqueta1 = new JLabel("Numero 1");
        etiqueta2 = new JLabel("Numero 2");
        etiqueta3 = new JLabel("Resultado");
       
        campo1 = new JTextField(10);
        campo2 = new JTextField(10);
        campo3 = new JTextField(10);
        campo3.setEditable(false);
       
        botonSuma = new JButton("Sumar");
        botonResta = new JButton("Restar");
        botonProducto = new JButton("Multiplicar");
        botonDivision = new JButton("Dividir");
        botonBorrar = new JButton("Borrar");
       
        add(etiqueta1);
        add(campo1);
       
        add(etiqueta2);
        add(campo2);
       
        add(etiqueta3);
        add(campo3);
       
        add(botonSuma);
        add(botonResta);
        add(botonProducto);
        add(botonDivision);
        add(botonBorrar);
       
        numero1 = 0;
        numero2 = 0;
       
        AdministradorEventos administrador = new AdministradorEventos();
       
        campo1.addActionListener(administrador);
        campo2.addActionListener(administrador);
       
        botonSuma.addActionListener(administrador);
        botonResta.addActionListener(administrador);
        botonProducto.addActionListener(administrador);
        botonDivision.addActionListener(administrador);
        botonBorrar.addActionListener(administrador);

    }
   
    private class AdministradorEventos implements ActionListener {
       
        public void actionPerformed(ActionEvent evento){
           
            if(evento.getSource() == campo1){
               
                numero1 = Integer.parseInt(evento.getActionCommand());
               
            }
           
            if(evento.getSource() == campo2){
               
                numero2 = Integer.parseInt(evento.getActionCommand());
               
            }
           
            if(evento.getSource() == botonSuma){
               
                resultado = numero1 + numero2;
                campo3.setText(Integer.toString(resultado));
               
            }
           
            if(evento.getSource() == botonResta){
               
                resultado = numero1 - numero2;
                campo3.setText(Integer.toString(resultado));
               
            }
           
            if(evento.getSource() == botonProducto){
               
                resultado = numero1 * numero2;
                campo3.setText(Integer.toString(resultado));
               
            }
           
            if(evento.getSource() == botonDivision){
               
                resultado = numero1 / numero2;
                campo3.setText(Integer.toString(resultado));
               
            }
           
            if(evento.getSource() == botonBorrar){
               
                numero1 = 0;
                numero2 = 0;
                resultado = 0;
               
                campo1.setText("");
                campo2.setText("");
                campo3.setText("");
               
            }
           
        }
       
    }
   
   
}


Y ahora les dejo el programa principal

package ejercicio109;

public class Ejercicio109 {

    public static void main(String[] args) {
       
        Calculadora calculadora = new Calculadora();
       
        calculadora.setSize(600,100);
        calculadora.setResizable(false);
        calculadora.setDefaultCloseOperation(Calculadora.EXIT_ON_CLOSE);
        calculadora.setVisible(true);
       
    }
}




En línea

ThinkByYourself

Desconectado Desconectado

Mensajes: 191


Ver Perfil
Re: Necesito ayuda para mi Calculadora (usando la libreria Swing)
« Respuesta #1 en: 31 Enero 2013, 11:19 am »

Entonces el ActionListener lo tendrías que implementar en el botón de la operación. ¿No? Vale, perdón... xD  ¿Y no te funciona? Es que yo creo que tengo un problema muy parecido...


« Última modificación: 31 Enero 2013, 11:22 am por NoBullshit » En línea

No te voy a engañar.
Todos hemos sido programados para normalizar la psicopatía de las élites económicas y políticas, y para realimentar su patrón de ciega codicia.
Slider324

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Re: Necesito ayuda para mi Calculadora (usando la libreria Swing)
« Respuesta #2 en: 1 Febrero 2013, 11:11 am »

este codigo:

Código:
if(evento.getSource() == campo1){
              
                numero1 = Integer.parseInt(evento.getActionCommand());
              
            }
          
            if(evento.getSource() == campo2){
              
                numero2 = Integer.parseInt(evento.getActionCommand());
              
            }

           if(evento.getSource() == botonSuma){
              
                resultado = numero1 + numero2;
                campo3.setText(Integer.toString(resultado));
              
            }




Lo puedes hacer de esta forma;

Código:
if(evento.getSource() == botonSuma){
              
                numero1 = Integer.parseInt(campo1.getText());
                numero2 = Integer.parseInt(campo2.getText());
                resultado = numero1 + numero2;
                campo3.setText(Integer.toString(resultado));
              
            }


Y de esa manera no necesitas presionar enter toda la funcion se hara al precionar el boton sumar, bueno aqui te dejo una que hice para que puedas ver un ejemplo:


Código:
//Librerias
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

//Inicia Nuestra Clase Ventana
public class Calculadora extends JFrame implements ActionListener{

    //Objetos de Nuestra Ventana
    public int num1, num2;
    public JLabel result, digito1, digito2;
    public JButton sumar, restar, dividir, multi, limpiar;
    public JTextField val1, val2, res;
    
    
    //Nuestro Constrcutor de Calculadora
    public Calculadora(){
        
        //Titulo Tamaño etc..
        setTitle("Calculadora Demo");
        setLayout(new FlowLayout());
        setSize(580,100);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setResizable(false);
                        
        //Cargamos Objetos
        Obtejos();
                      
        //Para Centrar Ventana
        setLocationRelativeTo(null);
                
    }//Termina Metodo Ventana
    
    
    //Metodo Objetos
    private void Obtejos(){
                
        //Instanciamos Labels
        digito1 = new JLabel("Numero1: ");
        digito2 = new JLabel("Numero2: ");
        result = new JLabel("Resultado: ");
        
        
        //Instanciamos TextArea
        val1 = new JTextField(10);
        val2 = new JTextField(10);
        res = new JTextField(10);
        res.setEditable(false);
        
        
        //Instanciamos Botones
        sumar = new JButton("+");
        sumar.setToolTipText("Sumar");
        
        restar = new JButton("-");
        restar.setToolTipText("Restar:");
        
        dividir = new JButton("/");
        dividir.setToolTipText("Dividir");
        
        multi = new JButton("*");
        multi.setToolTipText("Multiplicar");
        
        limpiar = new JButton("C");
        limpiar.setToolTipText("Reiniciar Campos");
        
              
        //Agregamos A nuestra Ventana Nuestros Objetos                    
        this.add(digito1);
        this.add(val1);
        
        this.add(digito2);
        this.add(val2);
        
        this.add(result);
        this.add(res);
                
        this.add(sumar);
        this.add(restar);
        this.add(dividir);
        this.add(multi);
        this.add(limpiar);  
                      
                
        //Escuchamos Botones
        sumar.addActionListener(this);
        restar.addActionListener(this);
        dividir.addActionListener(this);
        multi.addActionListener(this);
        limpiar.addActionListener(this);
    
    
    }//Termina nuestro Metodo Objetos

    
    //Definimos la Funciones de cada Botons
    @Override
    public void actionPerformed(ActionEvent e) {
        
        if(val1.getText().length() == 0){
            JOptionPane.showMessageDialog(null, "Inserta Un valor en el Area 1", "Error", JOptionPane.ERROR_MESSAGE);
        }else if(val2.getText().length() == 0){
            JOptionPane.showMessageDialog(null, "Inserta Un valor en el Area 2", "Error", JOptionPane.ERROR_MESSAGE);        
        }
        
        //si Presionan Sumar entonces
        else if(e.getSource() == sumar && val1.getText().length() != 0 && val2.getText().length() != 0){
            num1 = Integer.parseInt(val1.getText());
            num2 = Integer.parseInt(val2.getText());
            int resultado;
                        
            resultado = num1+num2;
            
            res.setText(Integer.toString(resultado));            
        }
        
        
        //si Presionan Restar entonces
        else if(e.getSource() == restar && val1.getText().length() != 0 && val2.getText().length() != 0){
            num1 = Integer.parseInt(val1.getText());
            num2 = Integer.parseInt(val2.getText());
            int resultado;
            
            resultado = num1-num2;
            
            res.setText(Integer.toString(resultado));  
        }
        
        
        //si Presionan dividir entonces
        else if(e.getSource() == dividir && val1.getText().length() != 0 && val2.getText().length() != 0){
            num1 = Integer.parseInt(val1.getText());
            num2 = Integer.parseInt(val2.getText());
            float resultado;
            
            resultado = num1/num2;
            
            res.setText(String.valueOf(resultado));
        }
        
        
        //si Presionan multiplicar entonces
        else if(e.getSource() == multi && val1.getText().length() != 0 && val2.getText().length() != 0){
            num1 = Integer.parseInt(val1.getText());
            num2 = Integer.parseInt(val2.getText());
            int resultado;
            
            resultado = num1*num2;
            
            res.setText(Integer.toString(resultado));
        }
        
        
        //si Presionan Limpiar entonces
        else if(e.getSource() == limpiar && val1.getText().length() != 0 && val2.getText().length() != 0){
            num1 = 0;
            num2 = 0;
            val1.setText("");
            val2.setText("");
            res.setText("");
        }
        
        
    }//Terminamos de Definir acciones
    
        
    
}//Termina nuestra clase Ventana

« Última modificación: 1 Febrero 2013, 11:29 am por Slider324 » En línea

DarkSorcerer

Desconectado Desconectado

Mensajes: 69



Ver Perfil
Re: Necesito ayuda para mi Calculadora (usando la libreria Swing)
« Respuesta #3 en: 2 Febrero 2013, 02:04 am »

Muchas gracias, me sirvió tu ayuda, ahora me funciona como yo lo quería  ;-)

Aunque tuve un pequeño problema en el boton de la division, no me arrojaba decimales, a si que lo modifique de tal manera que mostrara


Lo hice asi

  if(evento.getSource() == botonDivision){

                numero1 = Integer.parseInt(campo1.getText());
                numero2 = Integer.parseInt(campo2.getText());
                double resultado = (double)numero1/(double)numero2;
                
                campoResultado.setText(String.format("%.3f", resultado));
                
            }

De todas maneras, muchas gracias por la ayuda, me fue muy util

Ahora mi proximo objetivo es programar una calculadora pero esta vez usando botones  ;D
« Última modificación: 2 Febrero 2013, 02:06 am por DarkSorcerer » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con Eventos y libreria Swing
Java
DarkSorcerer 3 3,037 Último mensaje 5 Febrero 2013, 20:52 pm
por DarkSorcerer
Ayuda Jave Netbeans swing
Programación General
Ajikan23 0 2,536 Último mensaje 17 Abril 2013, 04:14 am
por Ajikan23
Ejercicio en Java usando swing
Ejercicios
CarlosvAlencia 1 3,682 Último mensaje 16 Noviembre 2013, 16:31 pm
por Mitsu
Crear proyecto Swing usando Netbeans
Java
zonahurbana 5 3,877 Último mensaje 5 Febrero 2014, 21:42 pm
por 1mpuls0
(Ayuda) Error al ejecutar una aplicación usando la librería LWJGL « 1 2 »
Java
Seyro97 10 6,089 Último mensaje 24 Marzo 2015, 04:06 am
por 3n31ch
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines