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

buena organizacion de las clases

Estas en el tema de buena organizacion de las clases en el foro de Java en Foros del Web. Hola a todos, Hace poco empece con java y ando un poco liado, estoy haciendo el tipico programit del video club pero tengo unas cuantas ...
  #1 (permalink)  
Antiguo 10/08/2010, 15:50
 
Fecha de Ingreso: octubre-2008
Mensajes: 118
Antigüedad: 15 años, 6 meses
Puntos: 2
buena organizacion de las clases

Hola a todos,

Hace poco empece con java y ando un poco liado, estoy haciendo el tipico programit del video club pero tengo unas cuantas dudas sobre la estructura, y lo tengo estructurado de la siguiente manera:

Principal:

Código:
public class Principal {

    public static void main(String[] args) {

       Ventanas aplicacion = new Ventanas();
       aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

    }

}
Ventanas:

Código:
public class Ventanas extends JFrame {

    private JButton salir;
    private JButton pelis;
    private JButton clientes;
    private JButton devoluciones;
    private JButton alquileres;
    private JPanel panelPrincipal;

    public Ventanas(){
        super("VideoClub");

        this.getContentPane();

        agregarPanel(generarPanelPrincipal());
        this.setSize(1000, 700);
        this.setVisible(true);
    }

    private JPanel generarPanelPrincipal(){
        GridBagConstraints constraints = new GridBagConstraints();
        panelPrincipal = new JPanel();
        panelPrincipal.setLayout (new GridBagLayout());

        // clientes
        clientes=new JButton("Gestionar clientes");
        clientes.setName("Gestionar clientes");
        clientes.addActionListener(new EscuchaBotones());

        constraints.gridx = 0;
        constraints.gridy = 0;
        constraints.gridwidth = 2;
        constraints.gridheight = 2;
        constraints.anchor = GridBagConstraints.SOUTHWEST;
        constraints.weighty = 1.0;
        panelPrincipal.add (clientes, constraints);

        ....

        return panelPrincipal;
    }

    public void agregarPanelClientes(){

        removerPanel();
        agregarPanel(generarPanelClientes());

    }
    private JPanel generarPanelClientes(){


        return null;
    }

    private void removerPanel(){
        this.removeAll();
    }

    private void agregarPanel(JPanel panel){
        this.add(panel);
    }

}
EscuchaBotones:

Código:
public class EscuchaBotones implements ActionListener{
      // creamos la clase que escucha a los botones
        public void actionPerformed(ActionEvent e){
            String s = e.getActionCommand();
            String nombre=((JButton)e.getSource()).getName();
            System.out.println(nombre);
          if (nombre.equals("Gestionar clientes")){

// aqui deberia de llamar al metodo agregarPanelClientes de la clase Ventanas

          } else if (nombre.equals("Gestionar pelis")){

          } else if (nombre.equals("Gestionar alquileres")){

          } else if (nombre.equals("Gestionar devoluciones")){

          }

        }
    }
Lo que yo queria hacer es que al pulsar el boton Gestionar clientes este llame al metodo agregarPanelClientes de la clase Ventas y este ya se encargue de eliminar el JPanel, generar el nuevo JPanel con los botones para clientes y demas y agregar el JPanel de clientes.
Esto nose hacerlo ya que para llamar a estos metodos deberia de tener el objeto en la clase EscuchaBotones y no es asi, tmp nose como pasarselo.

Mi pregunta es: Esto se hace asi, agregando y quitando paneles? y si es asi, ¿lo tengo bien estructurado? y ¿como soluciono esto? y si no es asi, ¿como se hace xD?

Gracias x adelantado y gracias x vuestro tiempo.

Saludos,
Dani.
  #2 (permalink)  
Antiguo 11/08/2010, 01:57
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: buena organizacion de las clases

Aquí tienes varios ejemplos y soluciones

http://chuwiki.chuidiang.org/index.p...ActionListener
  #3 (permalink)  
Antiguo 11/08/2010, 03:19
 
Fecha de Ingreso: octubre-2008
Mensajes: 118
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: buena organizacion de las clases

Cita:
Iniciado por Xerelo Ver Mensaje
Aquí tienes varios ejemplos y soluciones

http://chuwiki.chuidiang.org/index.p...ActionListener

muchas gracias, me ha servido de mucho, ahora ya se como utilizar correctamente los ActionListener pero sigo teniendo la duda de si las diferentes "pantallas" o ventanas de la aplicacion las tengo q crear cada una en un JPanel e ir cambiando el JPanel segun lo que pida el usuario o hay otra forma.


Saludos,
Dani.
  #4 (permalink)  
Antiguo 11/08/2010, 07:55
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: buena organizacion de las clases

Hola:

Sí, tienes que hacer cada panel por separado. Lo habitual es hacer una clase por cada panel, heredando de JPanel y en algún método de esa clase (el constructor o un initComponents() o similar) añadirle al panel los botones. En tu clase tendrías las clases PanelGestionarPelis extends JPanel, PanelGestionarAlquileres extends JPanel, etc).

En el panel principal, haz un add(panel, gridbagconstraints) para el panel que te interese en cada momento. Debes quitar el panel que hubiera previamente visible con un remove(panelAnterior).

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 12/08/2010, 08:04
 
Fecha de Ingreso: octubre-2008
Mensajes: 118
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: buena organizacion de las clases

Cita:
Iniciado por chuidiang Ver Mensaje
Hola:

Sí, tienes que hacer cada panel por separado. Lo habitual es hacer una clase por cada panel, heredando de JPanel y en algún método de esa clase (el constructor o un initComponents() o similar) añadirle al panel los botones. En tu clase tendrías las clases PanelGestionarPelis extends JPanel, PanelGestionarAlquileres extends JPanel, etc).

En el panel principal, haz un add(panel, gridbagconstraints) para el panel que te interese en cada momento. Debes quitar el panel que hubiera previamente visible con un remove(panelAnterior).

Se bueno.
OK, muchas gracias a los 2 por orientarme^^. Ahora ya puedo hacer algun programita medianamente decente y bien organizado xD


Saludos,
Dani.

Etiquetas: clases, organizacion
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:31.