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

Problema con MouseEvent

Estas en el tema de Problema con MouseEvent en el foro de Java en Foros del Web. Hola: He intentado hacer una especie de menú desplegable de una forma un tanto rústica y me ha salido. El problema es que cuando pulso ...
  #1 (permalink)  
Antiguo 24/10/2012, 15:50
 
Fecha de Ingreso: agosto-2012
Mensajes: 15
Antigüedad: 11 años, 8 meses
Puntos: 0
Problema con MouseEvent

Hola:
He intentado hacer una especie de menú desplegable de una forma un tanto rústica y me ha salido.
El problema es que cuando pulso el botón habitaciones, se me abre el JFrame pantallaHabitaciones, pero si lo cierro y lo vuelvo a abrir, se me abren 4 frames iguales de pantallaHabitaciones, y si le vuelvo a dar, 12...
No entiendo.
Os dejo código, gracias.
Código:
administrador.addMouseListener(new MouseAdapter() {
                @Override
            public void mouseEntered (MouseEvent e) {
                datos.setVisible(true);
                configuracion.setVisible(true);
                informes.setVisible(true);
                habitaciones.setVisible(false);
                servicios.setVisible(false);
                ofertas.setVisible(false);
            }
                @Override
                public void mouseExited (MouseEvent e) {
                    datos.setVisible(false);
                    datos.addMouseListener(new MouseAdapter() {
                        @Override
                        public void mouseEntered (MouseEvent e) {
                            datos.setVisible(true);
                            habitaciones.setVisible(true);
                            servicios.setVisible(true);
                            ofertas.setVisible(true);
                            configuracion.setVisible(false);
                            informes.setVisible(false);
                        }
                        @Override
                        public void mouseExited (MouseEvent e) {
                            datos.setVisible(false);
                            habitaciones.setVisible(false);
                            habitaciones.addMouseListener(new MouseAdapter() {
                                @Override
                                public void mouseEntered (MouseEvent e) {
                                    habitaciones.setVisible(true);
                                    datos.setVisible(true);
                                    servicios.setVisible(true);
                                    ofertas.setVisible(true);
                                }
                                @Override
                                public void mouseExited (MouseEvent e) {
                                    datos.setVisible(false);
                                    servicios.setVisible(false);
                                    ofertas.setVisible(false);
                                    habitaciones.setVisible(false);
                                }                         
                                @Override
                                public void mouseClicked (MouseEvent evt) {
                                    JFrame pantallaHabitaciones = new JFrame("Administración de datos de habitaciones");
                                    JFrame.setDefaultLookAndFeelDecorated(true);
                                    pantallaHabitaciones.setSize(500, 500);
                                    pantallaHabitaciones.setLocationRelativeTo(null);
                                    pantallaHabitaciones.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                                    pantallaHabitaciones.setVisible(true);
                                }
                            });
                            servicios.setVisible(false);
                            servicios.addMouseListener(new MouseAdapter() {
                                @Override
                                public void mouseEntered (MouseEvent e) {
                                    habitaciones.setVisible(true);
                                    datos.setVisible(true);
                                    servicios.setVisible(true);
                                    ofertas.setVisible(true);
                                }
                                @Override
                                public void mouseExited (MouseEvent e) {
                                    datos.setVisible(false);
                                    servicios.setVisible(false);
                                    ofertas.setVisible(false);
                                    habitaciones.setVisible(false);
                                }
                                @Override
                                public void mouseReleased (MouseEvent e) {
                                    
                                }
                            });
                            ofertas.setVisible(false);
                            ofertas.addMouseListener(new MouseAdapter() {
                                @Override
                                public void mouseEntered (MouseEvent e) {
                                    habitaciones.setVisible(true);
                                    datos.setVisible(true);
                                    servicios.setVisible(true);
                                    ofertas.setVisible(true);
                                }
                                @Override
                                public void mouseExited (MouseEvent e) {
                                    datos.setVisible(false);
                                    servicios.setVisible(false);
                                    ofertas.setVisible(false);
                                    habitaciones.setVisible(false);
                                }
                                @Override
                                public void mouseReleased (MouseEvent e) {
                                    
                                }
                            });
                        }
                    });
                    configuracion.setVisible(false);
                    informes.setVisible(false);
                    habitaciones.setVisible(false);
                    servicios.setVisible(false);
                    ofertas.setVisible(false);
                    
                }
        });
P.D.: he probado a hacer pantallaHabitaciones en una clase a parte y llamar desde el mousseClick a esa clase y pasa lo mismo... no encuentro la razón del fayo. Me gustaría hacerlo en otra clase para sacarlo de ahí y no complicarme pero...Grax
  #2 (permalink)  
Antiguo 24/10/2012, 16:20
Avatar de tinlui  
Fecha de Ingreso: junio-2011
Ubicación: Saltillo, Mexico, Mexico
Mensajes: 20
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Problema con MouseEvent

has probado usando una condicion para que no te despliegue todo al mismo tiempo,
sino que dependiendo que opcion elija, hay un evento que es cuando el mouse esta afuera deberias de ponerselo tambien para indicarle que si no esta ahi no se despliegue
  #3 (permalink)  
Antiguo 24/10/2012, 16:38
 
Fecha de Ingreso: agosto-2012
Mensajes: 15
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Problema con MouseEvent

Solucionado, lo que pasa es que tenía un despelote de código de la leche...
Asi que he creado un método al que voy llamando en función de dónde se encuentre el ratón y a base de organizarlo todo un poco, funciona...
No quiero mirar más el código anterior porque según lo creaba lo veía incluso lógico pero es caótico... lo raro es que algo funcionase. Gracias.
Si alguien tiene mi mismo problema y quiere solución (que no será la más correcta, pero es una) que escriba.
Un saludo a todos
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 14:17.