TransWikia.com

¿Como puedo agregar ActionListener en este método?

Stack Overflow en español Asked by WebRollanDeveloper on December 23, 2021

He elaborado un método para optimizar la generación de un Menú en una aplicación Java, utilizando JComponents, me faltaría adicionar la acción a los elementos de menú y no tengo idea de como insertarlo dentro de este propio método, agradecería la ayuda pues de ello depende entregar el proyecto

private JMenuBar BarMenu;
private String Element_Menu = "";

public void MakeMenu(String ItemsMenu, String ElemMenu, String FontStyle, int FontTyle, int FontSize) {
    if (BarMenu.getMenuCount() == 0) {
        BarMenu.add(new JMenu(ElemMenu)).add(new JMenuItem(ItemsMenu));
    } else if (Element_Menu.equals(ElemMenu)) {
        for (int i=0; i<BarMenu.getMenuCount(); i++) {
            JMenu ItMenu = BarMenu.getMenu(i);
            if (ItMenu.getText().equals(ElemMenu)) {
               ItMenu.add(new JMenuItem(ItemsMenu));
            }
        }
    } else { BarMenu.add(new JMenu(ElemMenu)).add(new JMenuItem(ItemsMenu)); }
    Element_Menu = ElemMenu;
}

2 Answers

Perdona no haber respondido antes, cuestiones personales. Pues te comento, este método tuyo es lo que buscaba, yo me hice uno, pero al final, tenía que implementar un actionPerformed para cada uno y me liaba mas, gracias de todo corazón. Perfecto, es lo que buscaba. Uff ¿Cómo es que antes no había recurrido aquí?, me hubiese evitado decepciones, frustraciones y hasta abandono. Esto es la ostia

Felicidades son una comunidad espectacular!!!!!!

Answered by WebRollanDeveloper on December 23, 2021

1.- hice un metodo llamado recorrer que recibe un jmenubar como parametro y lo recorre para agregar a cada jmenuitem el actionlistener, aqui te dejo mi clase Ventana donde verifique lo que pides

public class Ventana implements ActionListener {
private JMenuBar BarMenu;
private String Element_Menu = "";

public void init(){
    BarMenu = new JMenuBar();
    BarMenu = MakeMenu("escribir", "Archivo");

    JFrame frame = new JFrame();
    frame.setSize(500,600);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setResizable(true);
    frame.setJMenuBar(BarMenu);
}



public JMenuBar MakeMenu(String ItemsMenu, String ElemMenu) {
    if (BarMenu.getMenuCount() == 0) {
        BarMenu.add(new JMenu(ElemMenu)).add(new JMenuItem(ItemsMenu));
    } else if (Element_Menu.equals(ElemMenu)) {
        for (int i=0; i<BarMenu.getMenuCount(); i++) {
            JMenu ItMenu = BarMenu.getMenu(i);
            if (ItMenu.getText().equals(ElemMenu)) {
                ItMenu.add(new JMenuItem(ItemsMenu));
            }
        }
    } else { BarMenu.add(new JMenu(ElemMenu)).add(new JMenuItem(ItemsMenu)); }
    Element_Menu = ElemMenu;
    //aqui es donde le agregas el actionlistener a cada jemnuitem
    recorrer(BarMenu);
    return BarMenu;
}


public void recorrer(JMenuBar menu){
    //recorremos cada JMenu del JMenuBar
    for (int i = 0; i < menu.getMenuCount(); i++) {
        //se crea una JMenu para cada recorrido
        JMenu jmenu = menu.getMenu(i);
        //recorremos ese JMenu
        for (int j = 0; j < jmenu.getMenuComponentCount(); j++) {
            //con getMenuComponent le pasamos cada jmenuitem al objeto jmenuitem
            JMenuItem jMenuItem = (JMenuItem) jmenu.getMenuComponent(j);
            //a cada uno le agregas el action listenner
            jMenuItem.addActionListener(this);
        }
    }
}

@Override
public void actionPerformed(ActionEvent e) {

}

}

el metodo recorrer esta explicado espero sea lo que buscas saludos

Answered by Tomás Salgado on December 23, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP