我希望JMenu在程序启动时显示项目

时间:2017-05-25 11:14:12

标签: java

我创建了一个菜单栏并添加了一个包含多个项目的菜单。当我在JMenu(archiveMenu)上执行doClick()时,它会突出显示菜单的按钮,但它不会显示添加到其中的任何项目。在将actionListeners添加到items和setVisible(true)之前,我尝试过doClick(),但没有任何效果。

我认为这与他们有单独的actionListeners这一事实有关,但到目前为止,我在程序中更改为单个actionListener会导致大量的工作。感谢任何帮助,谢谢!

看起来像这样:

https://i.gyazo.com/8ca08ee94d7de7840c808a19261b762f.png

// 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();

1 个答案:

答案 0 :(得分:0)

发生的事情是,当调用doClick()时,窗口尚未完全加载。

你需要在加载后执行它。

例如,你可以在打开框架时调用它:

myFrame.addWindowListener(new WindowAdapter() {
    @Override
    public void windowOpened(WindowEvent e) {
        archiveMenu.doClick();
    }

});