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

Problema con clases

Estas en el tema de Problema con clases en el foro de Java en Foros del Web. Hola q tal estoy empezando usar graficos en java pero tengo un pekeño problema, tratare de explikar lo mas claro... tengo una clase principal q ...
  #1 (permalink)  
Antiguo 28/09/2011, 19:57
 
Fecha de Ingreso: septiembre-2011
Mensajes: 2
Antigüedad: 13 años, 1 mes
Puntos: 0
Problema con clases

Hola q tal estoy empezando usar graficos en java pero tengo un pekeño problema, tratare de explikar lo mas claro...

tengo una clase principal q se llama Simple en la cual agrego unas imagenes en cuanto corro el programa, tamb en esa clase tengo un boton q me manda a otra clase en la clase tengo una condicion q si "x imagen" esta invisible que me la ponga visible o bise versa...

Código:
....
public class Simple extends JFrame
{
....
....

        img11 = new ImageIcon("doc/cliente.png");
        clt11= new JLabel(img11);
        clt11.setBounds(90,125,50,50);
        clt11.setVisible(false);
        add(clt11);
....
....
// acción del boton
public void eventos()
    {   
        Iniciar.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e)
            {
               Clientes clt = new Clientes();
               clt.online();
            }
        });
    }

// Esta es el metodo k se tiene q ejecutar cunado mando hablar a la clase cliente
public void esconder()
    {
        JOptionPane.showMessageDialog(null,"Iniciando esconder");
        
        clt11.setVisible(false);
  }


esta es mi 1er clase

la otra seria la sig


Código:
public class Clientes extends Simple
{
    public void online()
    {
        int time1=0,time2,time3;
        if(super.clt11.isVisible())
        {
            JOptionPane.showMessageDialog(null,"Si sta visible");
            time1--;
        }
        else 
        {
            JOptionPane.showMessageDialog(null,"No sta visible");
            time1=tiempo.add_cliente();
            super.esconder();   ---->>>>  AQUI ESTA EL PROBLEMA
        }
    }


ya q cunado entra a super.esconder() de la clase padre, si manda el mje d q entro a la clase pero no me oculta la img

en cambio si desde la misma clase principal mando hablar al metodo esconder si lo esconde...

spero q alguien me haya entendido y me pueda ayudar grax un saludo
  #2 (permalink)  
Antiguo 29/09/2011, 06:21
Avatar de afrika026  
Fecha de Ingreso: junio-2011
Mensajes: 85
Antigüedad: 13 años, 5 meses
Puntos: 19
Respuesta: Problema con clases

en el metodo "void esconder()" tenes que cambiar la siguiente línea:

clt11.setVisible(false);

por

this.clt11.setVisible(false);
  #3 (permalink)  
Antiguo 29/09/2011, 10:03
 
Fecha de Ingreso: septiembre-2011
Mensajes: 2
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Problema con clases

no viejo mira t puedo dejar las 2 clases para ver si puedes verlo mjor ya tentiendolo completo


Código:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;

public class Simple extends JFrame
{
    public int cont=5;
    //Tiempos de cajas
    public JLabel time_cj1,time_cj2,time_cj3;
    //Img de cajas
    JLabel cja1,cja2,cja3;
    //Disponible caja
    JLabel disp1,disp2,disp3;
    //Clientes
    JLabel clt1,clt2,clt3,clt4,clt5,clt6,clt7,clt8,clt9,clt10,clt11,clt12,clt13;
    //Botones
    JButton Iniciar,Agregar,Cerrar;
    //Imanges
    ImageIcon cja1img,cja2img,cja3img,disp1img,disp2img,disp3img;
    ImageIcon img1,img2,img3,img4,img5,img6,img7,img8,img9,img10,img11,img12,img13;
    
    //Constructor
    public Simple()
    {
        setLayout(null);
        crear();
        eventos();
    }
    
    public void crear()
    {
        //Timer de la 1er caja
        time_cj1 = new JLabel("--DISPONIBLE--");
        time_cj1.setBounds(80,15,100,100);
        add(time_cj1);
        
        //Timer de la 2da caja
        time_cj2 = new JLabel("--DISPONIBLE--");
        time_cj2.setBounds(220,15,100,100);
        add(time_cj2);
        
        //Timer de la 3er caja
        time_cj3 = new JLabel("--DISPONIBLE--");
        time_cj3.setBounds(340,15,100,100);
        add(time_cj3);
        
        cja1img= new ImageIcon("C:/Users/Hackdie/Documents/Hackdie/doc/banco.png");
        cja1 = new JLabel(cja1img);
        cja1.setBounds(90,75,50,50);
        add(cja1);
        
        cja2img= new ImageIcon("C:/Users/Hackdie/Documents/Hackdie/doc/banco.png");
        cja2 = new JLabel(cja2img);
        cja2.setBounds(230, 75,50,50);
        add(cja2);
       
        cja3img= new ImageIcon("C:/Users/Hackdie/Documents/Hackdie/doc/banco.png");
        cja3=new JLabel(cja3img);
        cja3.setBounds(350,75,50,50);
        add(cja3);
        
        //Agregar Boton de Iniciar
        Iniciar = new JButton("Iniciar");
        Iniciar.setBounds(500,150,100,25);
        add(Iniciar);
        
        //Agregar Boton de Agregar Cliente
        Agregar= new JButton("Add");
        Agregar.setBounds(500,190,100,25);
        add(Agregar);
        
        //Agrega Boton de Cerrar Banco
        Cerrar = new JButton("Cerrar");
        Cerrar.setBounds(500,230,100,25);
        add(Cerrar);
        
        //Cliente en Caja
        img11 = new ImageIcon("C:/Users/Hackdie/Documents/Hackdie/doc/cliente.png");
        clt11= new JLabel(img11);
        clt11.setBounds(90,125,50,50);
        //this.clt11.setVisible(false);
        add(clt11);
        
        img12 = new ImageIcon("C:/Users/Hackdie/Documents/Hackdie/doc/cliente.png");
        clt12= new JLabel(img12);
        clt12.setBounds(230,125,50,50);
        clt12.setVisible(false);
        add(clt12);
        
        img13 = new ImageIcon("C:/Users/Hackdie/Documents/Hackdie/doc/cliente.png");
        clt13= new JLabel(img13);
        clt13.setBounds(350,125,50,50);
        clt13.setVisible(false);
        add(clt13);
        
        //Cliente No. 1
        img1 = new ImageIcon("C:/Users/Hackdie/Documents/Hackdie/doc/cliente.png");
        clt1= new JLabel(img1);
        clt1.setBounds(230,190,50,50);
        add(clt1);
        
        //Cliente No2.
        img2=new ImageIcon("C:/Users/Hackdie/Documents/Hackdie/doc/cliente.png");
        clt2= new JLabel(img2);
        clt2.setBounds(230,240,50,50);
        add(clt2);
        
        img3=new ImageIcon("C:/Users/Hackdie/Documents/Hackdie/doc/cliente.png");
        clt3= new JLabel(img3);
        clt3.setBounds(230,290,50,50);
        add(clt3);
        
        img4=new ImageIcon("C:/Users/Hackdie/Documents/Hackdie/doc/cliente.png");
        clt4= new JLabel(img4);
        clt4.setBounds(230,340,50,50);
        add(clt4);
        
        img5=new ImageIcon("C:/Users/Hackdie/Documents/Hackdie/doc/cliente.png");
        clt5= new JLabel(img5);
        clt5.setBounds(230,390,50,50);
        add(clt5);
        
        img6=new ImageIcon("C:/Users/Hackdie/Documents/Hackdie/doc/cliente.png");
        clt6= new JLabel(img6);
        clt6.setBounds(230,440,50,50);
        add(clt6);
        
        img7=new ImageIcon("C:/Users/Hackdie/Documents/Hackdie/doc/cliente.png");
        clt7= new JLabel(img7);
        clt7.setBounds(230,490,50,50);
        add(clt7);
        
        img8=new ImageIcon("C:/Users/Hackdie/Documents/Hackdie/doc/cliente.png");
        clt8= new JLabel(img8);
        clt8.setBounds(230,540,50,50);
        add(clt8);
        
        img9=new ImageIcon("C:/Users/Hackdie/Documents/Hackdie/doc/cliente.png");
        clt9= new JLabel(img9);
        clt9.setBounds(230,590,50,50);
        add(clt9);
        
        img10=new ImageIcon("C:/Users/Hackdie/Documents/Hackdie/doc/cliente.png");
        clt10= new JLabel(img10);
        clt10.setBounds(230,640,50,50);
        add(clt10);
    }
    
    public void esconder()
    {
        JOptionPane.showMessageDialog(null,"Iniciando esconder");
        
        this.clt11.setVisible(true);
        
        /*switch(cont)
        {
               case 1:
                   clt1.setVisible(false);
                   break;
                   case 2:
                        clt2.setVisible(false);
                    break;
                    case 3:
                        clt3.setVisible(false);
                    break;
                    case 4:
                        clt4.setVisible(false);
                    break;
                    case 5:
                        clt5.setVisible(false);
                    break;
                    case 6:
                        clt6.setVisible(false);
                    break;
                    case 7:
                        clt7.setVisible(false);
                    break;
                    case 8:
                        clt8.setVisible(false);
                    break;
                    case 9:
                        clt9.setVisible(false);
                    break;
                    case 10:                       
                        clt10.setVisible(false);
                    break;
                    default:
                        JOptionPane.showMessageDialog(null,"Cola Llena espere porfavor."); 
              }*/
        }
    
    
    public void eventos()
    {   
        Iniciar.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e)
            {
               Clientes clt = new Clientes();
               clt.online();
            }
        });
    }
    
    public static void main(String [] args)
    {
        //Main
        Simple frm= new Simple();
        frm.setBounds(250,50,650,750);
        frm.setVisible(true);
    }
}




Código:
import javax.swing.JOptionPane;
public class Clientes extends Simple
{
    Simple banco;
    duracion tiempo;
    
    public Clientes()
    {
        tiempo = new duracion();
        banco=new Simple();
    }
    
    public void online()
    {
        JOptionPane.showMessageDialog(null,"Ya enro a otra forma");
        int time1=0,time2,time3;
        if(super.clt11.isVisible())
        {
            JOptionPane.showMessageDialog(null,"Si sta visible");
            time1--;
            banco.esconder();
        }
        else 
        {
            JOptionPane.showMessageDialog(null,"No sta visible");
            time1=tiempo.add_cliente();
            banco.esconder();   ----> Desde aqui no hace k se esconda la img de la clase principal
        }
    }
}
  #4 (permalink)  
Antiguo 30/09/2011, 06:55
Avatar de afrika026  
Fecha de Ingreso: junio-2011
Mensajes: 85
Antigüedad: 13 años, 5 meses
Puntos: 19
Respuesta: Problema con clases

El error por lo que yo puedo observar esta en la clase CLIENTES.
El problema esta en el condicional IF.

Por lo que entiendo vos lo que queres lograr es que si el componente clt11 esta visible se ponga en invisible y viceversa.

En el condicional no lo estas logrando porque siempre lo estas poniendo en invisible.

a ver:

if(super.clt11.isVisible())
{
JOptionPane.showMessageDialog(null,"Si sta visible");
time1--;
banco.esconder();
}
"hasta aca todo bien, lo encuentra visible y lo conmuta a invisible"

"aca esta el error, en el else"
else
{
JOptionPane.showMessageDialog(null,"No sta visible");
time1=tiempo.add_cliente();
banco.esconder();
}
"el else lo que esta haciendo es que si encuentra al componente invisible
lo pone invisible. Pero tendía que hacer lo contrario, ponerlo visible"
El problema principal esta en el metodo "esconder()" el cual pone siempre en invisible al componente.

yo personalmente obviaria el metodo esconder y trabajaría en el bloque condicional, yo lo pondía así.

if(super.clt11.isVisible())
{
JOptionPane.showMessageDialog(null,"Si sta visible");
time1--;
super.clt11.setVisible(false);
}
else
{
JOptionPane.showMessageDialog(null,"No sta visible");
time1=tiempo.add_cliente();
super.clt11.setVisible(true);
}

Etiquetas: visible, formulario
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 01:24.