2017-05-25 60 views
0

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

我认为这与他们有单独的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(); 

回答

0

正在发生的事情是,当doClick()被称为窗口没有完全加载呢。

您需要在加载后执行它。

例如,你可以把它打开的帧时:

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

}); 
+0

我有一个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} –

+0

没关系,它的工作原理。我忘记删除位于构造函数中的以前的archiveMenu.doClick()。非常感谢你! –

相关问题