gpt4 book ai didi

java - 动态菜单 Java Swing

转载 作者:搜寻专家 更新时间:2023-11-01 03:28:36 24 4
gpt4 key购买 nike

我需要在 java swing 中制作一个动态菜单。我有一个具有菜单结构的数据库表。这是我组装菜单的类,但我想避免在 actionPerformed 方法中烧毁文字代码,类名(屏幕)出现在表字段中。我的屏幕是一个 destoktopPane。

public class MenuPrincipal extends JFrame implements ActionListener {

private static final long serialVersionUID = 1L;
public static JDesktopPane desktop;

public MenuPrincipal(ArrayList<MenuDTO> opcionesUsuario) {
//Creamos la ventana del menu principal.
super("Menu Principal - Demografo");

JMenuBar menuBar = null;
JMenu menu = null, submenu = null;
JMenuItem menuItem = null;

int longitud = opcionesUsuario.size();

//Creamos una barra de menu
menuBar = new JMenuBar();

menu = new JMenu("Archivo");
menuItem = new JMenuItem("Cerrar sessión",
new ImageIcon("images/middle.gif"));
menu.add(menuItem);
menu.addSeparator();
menuItem = new JMenuItem("Salir");
menu.add(menuItem);

MenuDTO menuDTO;
for(int i = 0; i < longitud; i ++) {
menuDTO = opcionesUsuario.get(i);
if(menuDTO.getTieneHijos().equals("S")) {
if(menuDTO.getIdPadre() == null) {
menu = new JMenu(menuDTO.getNombre());
menuBar.add(menu);
}
else {
submenu = new JMenu(menuDTO.getNombre());
menu.add(submenu);
}
}
else {
menuItem = new JMenuItem(menuDTO.getNombre());
menuItem.setActionCommand(Integer.toString(menuDTO.getIdOpcion()));
menuItem.addActionListener(this);
menu.add(menuItem);
}
}
desktop = new JDesktopPane();
desktop.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);

int inset = 50;
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(inset, inset,
screenSize.width - inset*2,
screenSize.height - inset*2);
setContentPane(desktop);
setJMenuBar(menuBar);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setExtendedState(MAXIMIZED_BOTH);
setSize(450, 260);
setVisible(true);
}

public void actionPerformed(ActionEvent e) {
if ("4".equals(e.getActionCommand()))
IngresoCiudades.getInstance(desktop);
else if ("5".equals(e.getActionCommand()))
IngresoParroquias.getInstance(desktop);
else if ("8".equals(e.getActionCommand()))
IngresoBarrios.getInstance(desktop);
}
}

最佳答案

考虑实现 Action界面,如 How to Use Actions 中所述.有相关例子herehere .您可以使用 Class Literals as Runtime-Type Tokens获取每个类的 newInstance()

关于java - 动态菜单 Java Swing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6785319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com