Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

169
Vistas
Iterar un JMenu en sus JMenuItems

Estoy tratando de encontrar una forma de seleccionar un elemento en un JMenu por su nombre. Básicamente, lo que quiero hacer es esto:

 public boolean setEnableByName(boolean enable, String itemName) { for (Component item : myJMenu.getComponents()) { if (item.getName().equals(itemName)) { item.setEnabled(enable); return true; } } return false; }

He intentado iterar en myJMenu.getComponents() o myJMenu.getMenuComponents() , sin éxito. He buscado el motivo y parece deberse a que JMenu no almacena directamente los submenús y los elementos directamente, es decir, no están realmente presentes.

Hay una pregunta similar sobre SO, pero data de 2012 y el swing tuvo muchos cambios.

Probé con un JMenu que contenía 2 JMenus y 2 JMenuItems. Los resultados que obtuve:

  • Mientras uso getComponents() : nunca ingreso el foreach (es decir, no se devuelven elementos)
  • Mientras uso getMenuComponents() : obtengo los dos elementos JMenu

NOTA : tenga en cuenta que no puedo usar este método ya que los elementos que activan la acción pueden estar en cualquier parte del código.

NOTA : A partir de las pruebas, descubrí que, para mi menú, getComponentsCount devolvió 0, getMenuComponentsCount devolvió 4, al igual que getItemsCount . Mi problema vino del hecho de que estaba comparando el name y no el text de mis elementos.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Supongo que está buscando JMenuItems y también que los agregó a su JMenu usando la función de add . En ese caso, podría usar las getItemCount() y getItem(int pos) como se muestra a continuación:

 public boolean setEnableByName(boolean enable, String itemName) { for (int i = 0 ; i < myJMenu.getItemCount(); i++) { JMenuItem item = myJMenu.getItem(i); if (item.getName().equals(itemName)) { item.setEnabled(enable); return true; } } return false; }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda