2017-05-25 56 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()。非常感謝你! –

相關問題