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;
}
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
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP