Foros del Web » Programación para mayores de 30 ;) » Java »

Boton que no responde

Estas en el tema de Boton que no responde en el foro de Java en Foros del Web. Hola Muchachos, estoy haciendo una pequeña calculadora, y todo funciona menos un boton, ese boton es el boton de PORCIENTO "%", no importa donde lo ...
  #1 (permalink)  
Antiguo 17/07/2003, 10:22
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Boton que no responde

Hola Muchachos, estoy haciendo una pequeña calculadora, y todo funciona menos un boton, ese boton es el boton de PORCIENTO "%", no importa donde lo pongo no responde al evento, que puede estar pasando?
Aqui les dejo el código completo
Código:
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class Calc extends Applet implements ActionListener
{
    private Button cero, uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve;
    private Button porc, mult, sum, resta, div, mc, mr, mmas, ce, punto, igual, signo;
    private TextField entrada;
    private double men, Ope1, Ope2, Total;
    private char Ope;
    private Panel board;
    private boolean OpePresionado;
    
    public void init(){
        men = 0;
        OpePresionado = false;
        
        uno = new Button("1");
        dos = new Button("2");
        tres = new Button("3");
        cuatro = new Button("4");
        cinco = new Button("5");
        seis = new Button("6");
        siete = new Button("7");
        ocho = new Button("8");
        nueve = new Button("9");
        cero = new Button("0");
        
        porc = new Button("%");
        mult = new Button("*");
        sum = new Button("+");
        resta = new Button("-");
        div = new Button("/");
        mc = new Button("MC");
        mr = new Button("MR");
        mmas = new Button("M+");
        ce = new Button("CE");
        punto = new Button(".");
        igual = new Button("=");
        signo = new Button("+/-");
        
        entrada = new TextField(20);
        
        setLayout(new BorderLayout());
        add("North",entrada);
        
        board = new Panel();
        board.setLayout(new GridLayout(5,5,6,6));
        
        porc.addActionListener(this);
        board.add(porc);
        
        siete.addActionListener(this);
        board.add(siete);
        
        ocho.addActionListener(this);
        board.add(ocho);

        nueve.addActionListener(this);
        board.add(nueve);

        signo.addActionListener(this);
        board.add(signo);

        mc.addActionListener(this);
        board.add(mc);

        cuatro.addActionListener(this);
        board.add(cuatro);

        cinco.addActionListener(this);
        board.add(cinco);

        seis.addActionListener(this);
        board.add(seis);

        div.addActionListener(this);
        board.add(div);

        mr.addActionListener(this);
        board.add(mr);

        uno.addActionListener(this);
        board.add(uno);

        dos.addActionListener(this);
        board.add(dos);

        tres.addActionListener(this);
        board.add(tres);

        mult.addActionListener(this);
        board.add(mult);

        mmas.addActionListener(this);
        board.add(mmas);

        cero.addActionListener(this);
        board.add(cero);

        punto.addActionListener(this);
        board.add(punto);

        igual.addActionListener(this);
        board.add(igual);

        resta.addActionListener(this);
        board.add(resta);

        ce.addActionListener(this);
        board.add(ce);

        sum.addActionListener(this);
        board.add(sum);
        
        add("Center",board);
        resize(200,200);
    }
    
    public void actionPerformed(ActionEvent ev)
    {
        try{
            Object obj = ev.getSource();
            if(obj==uno || obj==dos || obj==tres || obj==cuatro || obj==cinco || obj==seis || obj==siete || obj==ocho || obj==nueve || obj==cero || obj==punto){
                if (OpePresionado == false)
                    entrada.setText(entrada.getText()+ev.getActionCommand());
                else{
                    entrada.setText("");
                    entrada.setText(entrada.getText()+ev.getActionCommand());
                    OpePresionado = false;
                }
            }
            else{
                if (obj == ce)
                    entrada.setText("");
                else
                    if (obj == mc)
                        men = 0.0;
                    else
                        if (obj == mr)
                            entrada.setText(Double.toString(men));
                        else
                            if (obj == mmas)
                                men += Double.parseDouble(entrada.getText());
                            else
                                if (obj == porc)
                                    {} //Poner Codigo
                                else
                                    if (obj == sum){
                                        OpePresionado = true;
                                        Ope1 = Double.parseDouble(entrada.getText());
                                        Ope = '+';
                                    }
                                    else
                                        if (obj == resta){
                                            OpePresionado = true;
                                            Ope1 = Double.parseDouble(entrada.getText());
                                            Ope = '-';
                                        }
                                        else
                                            if (obj == mult){
                                                OpePresionado = true;
                                                Ope1 = Double.parseDouble(entrada.getText());
                                                Ope = '*';
                                            }
                                            else
                                                if (obj == div){
                                                    OpePresionado = true;
                                                    Ope1 = Double.parseDouble(entrada.getText());
                                                    Ope = '/';
                                                }
                                                else
                                                    if (obj == igual){
                                                        Ope2 = Double.parseDouble(entrada.getText());
                                                        OpePresionado = true;
                                                        
                                                        switch(Ope){
                                                            case '+':
                                                                entrada.setText(Double.toString(Ope1+Ope2));
                                                                Ope1 = 0.0;
                                                                Ope2 = 0.0;
                                                                Ope  = ' ';
                                                                break;
                                                            case '-':
                                                                entrada.setText(Double.toString(Ope1-Ope2));
                                                                Ope1 = 0.0;
                                                                Ope2 = 0.0;
                                                                Ope  = ' ';
                                                                break;
                                                            case '*':
                                                                entrada.setText(Double.toString(Ope1*Ope2));
                                                                Ope1 = 0.0;
                                                                Ope2 = 0.0;
                                                                Ope  = ' ';
                                                                break;
                                                            case '/':
                                                                entrada.setText(Double.toString(Ope1/Ope2));
                                                                Ope1 = 0.0;
                                                                Ope2 = 0.0;
                                                                Ope  = ' ';
                                                                break;
                                                        }
                                                    }
                                                    else
                                                        if (obj == signo)
                                                            entrada.setText(Double.toString(Double.parseDouble(entrada.getText())*(-1)));
                                                        else
                                                            if (obj == porc)
                                                                entrada.setText(Double.toString(Double.parseDouble(entrada.getText())/100));
            }
        }
        
        catch(Exception e){
            entrada.setText("Error...");
        }

    }
}
Saludos,
Joe Peña
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #2 (permalink)  
Antiguo 20/07/2003, 15:29
Avatar de kripton  
Fecha de Ingreso: diciembre-2002
Ubicación: Zaragoza
Mensajes: 296
Antigüedad: 21 años, 4 meses
Puntos: 0
Hola RsOfT!!!

He probado tu código añadiendo una salida por consola:

............
else if (obj == porc) {
System.out.println("HOLA");
}
............

y funcionaba perfectamente, incluso he realizado un debug y no hay ningun problema.

No tengo ni idea de que tipo de problemas puedes estar sufriendo

Suerte,
un saludo
kripton
__________________
Hoy por ti, mañana por mi. Compartiendo entre amigos.

Usuario Registrado Linux #327495
  #3 (permalink)  
Antiguo 21/07/2003, 06:08
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Ya me di cuenta que es lo que pasa, si te fijas en el codigo tengo dos veces el if asignando codigo al porc, pero el primer if que es al que siempre case no tiene codigo, solo tengo un comentario que dice, falta codigo, entonces en el ultimo if es que le pongo el codigo al porc.
Por eso nunca llagaba al ultimo if, porque siempre caiga en el primero que no tenia nada...
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:29.