我想让JMenu在程序启动时显示这些项目
问题描述:
我创建了一个菜单栏并添加了一个包含多个项目的菜单。当我在JMenu(archiveMenu)上执行doClick()时,它会突出显示菜单按钮,但不会显示添加到其中的任何项目。在添加actionListeners到items和setVisible(true)之前,我尝试了doClick(),但没有任何效果。我想让JMenu在程序启动时显示这些项目
我认为这与他们有单独的actionListeners这个事实有关,但我到目前为止的程序更改为单个actionListener会导致大量的工作。我感谢任何帮助,谢谢!
它看起来像这样:
// MENU BAR
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu archiveMenu = new JMenu("Archive");
menuBar.add(archiveMenu);
JMenuItem newItem = new JMenuItem("New Map");
JMenuItem loadItem = new JMenuItem("Load places");
JMenuItem saveItem = new JMenuItem("Save");
JMenuItem exitItem = new JMenuItem("Exit");
newItem.addActionListener(new NewMapLis());
loadItem.addActionListener(new LoadLis());
saveItem.addActionListener(new SaveLis());
exitItem.addActionListener(new ExitLis());
archiveMenu.add(newItem);
archiveMenu.add(loadItem);
archiveMenu.add(saveItem);
archiveMenu.add(exitItem);
archiveMenu.doClick();
答
正在发生的事情是,当doClick()
被称为窗口没有完全加载呢。
您需要在加载后执行它。
例如,你可以把它打开的帧时:
myFrame.addWindowListener(new WindowAdapter() {
@Override
public void windowOpened(WindowEvent e) {
archiveMenu.doClick();
}
});
我有一个WindowListener的,但它是仅关闭程序。我添加了windowOpened,但我得到了相同的结果。 类StopLis延伸WindowAdapter的{ \t \t覆盖 \t \t公共无效的windowClosing(WindowEvent WEV){ \t \t \t stopExecution(); \t \t} \t \t覆盖 \t \t公共无效的windowOpened(WindowEvent E){ \t archiveMenu.doClick(); \t} \t} –
没关系,它的工作原理。我忘记删除位于构造函数中的以前的archiveMenu.doClick()。非常感谢你! –