Java - Habilitar jmenuitem desde un jinternalframe

 
Vista:
sin imagen de perfil

Habilitar jmenuitem desde un jinternalframe

Publicado por Larry (3 intervenciones) el 05/06/2015 03:43:17
Saludos a todos. Tengo el siguiente problema. En un jframe principal le asocio un jmenubar con sus diferentes jmenu y jmenuitem. Hasta aquí todo bien. Uno de los jmenuitem "llama" a un jinternalframe y al llamarlo deshabilita el jmenuitem. Hasta aquí todo bien. Entonces la pantalla se visualiza el jframe prncipal, el jmenubar y el jinternalframe desplegado. Si hago click otra vez en el jmenuitem este se encuentra deshabilitado y no se puede desplegar otra vez la ventana. Hasta aquí todo bien. El jinternalframe tiene varios botones y uno de ellos es "Salir", entonces al hacer click el jinternalframe se cierra (this.dispose()). Pero antes se debe habilitar el jmenuitem correspondiente.
¿Cómo puedo obtener el jmenuitem, ya que el control lo tiene el jinternalframe y no el jframe principal?. He pasado el jframe principal como padre al jinternalframe, he llegado hasta el jmenubar pero no puedo llegar al jmenuitem para que quede habilitado nuevamente. Agradeceré mucho vuestras opiniones.

Desde ya gracias.

Larry
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Habilitar jmenuitem desde un jinternalframe

Publicado por Tom (1831 intervenciones) el 05/06/2015 14:15:37
Probablemente haya diseños mejores.
Pero en tu caso, teniendo en cuenta que solamente tienes que seguir los mismos pasos que en la creación de los menús, en orden inverso

- JMenuBar tiene un método getMenu(int); que te devuelve un JMenu
- JMenu tiene un método getItem(int); que te devuelve un JMenuItem.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Habilitar jmenuitem desde un jinternalframe

Publicado por Larry (3 intervenciones) el 05/06/2015 23:22:48
Saludos. Muchas gracias por responder. Sí, pero no encuentro la función o sentencia para llegar al ítem que corresponde, para este caso considera como un jmenuitem la opción que no corresponde:
Cito el código:
1
2
3
4
5
6
private void btnSalirActionPerformed(java.awt.event.ActionEvent evt) {
        String nombre;
        nombre = "Nombre Menú: "+padre.getJMenuBar().getMenu(0).getItem(2).getText();
        JOptionPane.showMessageDialog(rootPane, nombre, null, WIDTH);
        this.dispose();
    }

Al ejecutar el programa el mensaje indica como getitem(2) la opción "Usuario" y esta corresponde a un jmenu.

El menú está creado de la siguiente forma:

jmenu: MAESTROS, VENTAS, INVENTARIO, CUENTA CORRIENTE, AYUDA

De la opción MAESTRO se despliegan hacia abajo:
jmenuitem MANTENCION
jmenuitem SUPERVISOR
jmenu USUARIO
jmenuitem SALIR


De la opción USUARIO se despliegan hacia abajo:
jmenuitem ACTUALIZACION USUARIO

Es esta opción la que se debe llegar. Si observan en la porción de código citada más arriba tenemos:

padre.getJMenuBar().getMenu(0).getItem(2).getText();

padre = el jframe principal.
getJMenuBar() = el jmenubar asociado al frame.
getMenu(0) = el primer jmenu (en este caso MAESTROS), como es un array el índice comienza en 0.
getItem(2) = la opción indicada en la posición 2, en este caso USUARIO.

Como ven falta llegar a las opciones que cuelgan de USUARIO. He probado con varias funciones y no resulta.

Seguiremos investigando. De antemano gracias por vuestras observaciones.

Atte.

Larry
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Habilitar jmenuitem desde un jinternalframe

Publicado por Tom (1831 intervenciones) el 09/06/2015 12:34:43
¿ MANTENCION ?
A ver ... ¿ dónde está el problema ? "usuario" es a su vez un JMenu ... pues obtendras sus items con getItem() ¿ o no ?

Quizás leyendo la documentación habrías visto que JMenu y JMenuItem son intercambiables en bastantes sitios ... (JMenu es una subclase de JMenuItem)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar