2012-09-21 41 views
3

我正在做鞦韆。我必須創建一個由10個菜單組成的主屏幕。 我已經創建了由JFrame和JMenu菜單的形式。現在該菜單應該包含文本和圖像,並且應該在菜單點擊時調用執行的操作方法,以便可以在點擊菜單按鈕時執行操作。在JMenu中添加圖標和文字

現在我正在做JMenu,用的JMenuItem和圖標圖像圖標,但我想要的菜單,圖標和文本

我當前的代碼是

public class MenuScreen extends JFrame implements ActionListener{ 

      Container cp; 
      JMenuBar menuBar; 

      JLabel logo; 
       public MenuScreen() { 
        super(""); 
        cp=this.getContentPane(); 
        cp.setBackground(Color.gray); 

        menuBar= new JMenuBar(); 
     logo=new JLabel(im); 
       cp.add(logo); 
        logo.setBounds(100,80,500,350); 

      helpmenu= new JMenu(" Help "); 
     homemenu=new JMenu(" Home "); 
     fieldsmenu= new JMenu(" Fields "); 
     backmenu= new JMenu(" Back "); 
     forwardmenu= new JMenu(" Forward "); 
     panelmenu= new JMenu(" Panel "); 
     searchmenu= new JMenu(" Search "); 
     quickmenu= new JMenu(" Quick "); 
     infomenu= new JMenu(" Info "); 
     exitmenu= new JMenu(" Exit "); 
     mastermenu= new JMenu(" Master "); 
     tarrifmenu= new JMenu(" Tarrif "); 
     contactmenu= new JMenu(" Contact "); 
     webmenu= new JMenu(" Web "); 
     wordmenu= new JMenu(" Word "); 
     legaldictionarymenu= new JMenu(" LegalDictionary "); 
     budgetmenu=new JMenu(" Budget 2012 2013 "); 
     memberdetailmenu= new JMenu(" Member Details "); 


     Font f1= new Font("Arial",Font.BOLD,16); 

     budgetmenu.setFont(f1); 
     legaldictionarymenu.setFont(f1); 
     helpmenu.setFont(f1); 

     JMenuItem backmenuitem= new JMenuItem(backicon); 
     backmenu.add(backmenuitem); 


     JMenuItem exitmenuitem= new JMenuItem(exiticon); 
     exitmenu.add(exitmenuitem); 

     menuBar.add(helpmenu); 
     menuBar.add(homemenu); 
     menuBar.add(fieldsmenu); 
     menuBar.add(backmenu); 
     menuBar.add(forwardmenu); 
     menuBar.add(panelmenu); 
     menuBar.add(searchmenu); 
     menuBar.add(quickmenu); 
     menuBar.add(infomenu); 
     menuBar.add(exitmenu); 
     menuBar.add(mastermenu); 
     menuBar.add(tarrifmenu); 
     menuBar.add(contactmenu); 
     menuBar.add(webmenu); 
     menuBar.add(wordmenu); 
     menuBar.add(legaldictionarymenu); 
     menuBar.add(budgetmenu); 
     menuBar.add(memberdetailmenu); 

     setJMenuBar(menuBar); 

    /* 
    Adding Listeners to the menus where required 

    */ 
      searchmenu.addActionListener(this); 

    } 

    public void actionPerformed(ActionEvent ae) 
    { 
    JOptionPane.showMessageDialog(null,"clicked"); 
      if(ae.getActionCommand().equals("Search")) 
      { 

      SearchForm frm=new SearchForm(); 
     Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
      frm.setBounds(0,0,screenSize.width, screenSize.height); 
      frm.setVisible(true); 


      }   

    } 

    public static void main(String args[]) 
{ 

     MenuScreen frm= new MenuScreen(); 

     Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
     frm.setBounds(0,0,screenSize.width, screenSize.height); 
     frm.setVisible(true); 
} 
} 

請幫助我。

+2

請使用代碼塊一致性和邏輯縮進。如果問題可讀,則問題中的代碼更有用。隨着代碼縮進的方式,我可以更輕鬆地閱讀我的狗的早餐。 –

+2

一些提示1)如果問題是'如何添加圖標和文本到菜單項?'添加包含一個菜單的代碼,而不是一個菜單項而不是10個菜單和超過100行代碼。 2)'logo.setBounds(100,80,500,350);'不要那樣做,它會在稍後導致問題。而是使用佈局(使用填充和邊框)。 –

回答

9

如果你想JMenu,用圖標和文本做使用構造JMenuItem(String text, Icon icon)

helpmenu= new JMenu(" Help "); 
helpmenu.setIcon(..); 
+0

感謝它顯示圖標之前的圖標,但我想要圖標下方的文本意味着圖標上方和圖標下的文本和單擊事件應與Jmenu執行 –

+0

@ADESHRAJPUT請閱讀教程中如何使用JMenu/Items的章節在swing-tag wiki中引用 - 單純的api問題對幫助者來說太無聊了,並且不會幫助你太多...在一天結束時,你必須學習你正在使用的api,並且最終只能通過閱讀完成:-) – kleopatra

2

設置在Action您放在菜單上(使用鍵值對機制)的圖標和文字。密鑰在Action接口中定義。

class javadoc of the Action interface還包含一個很好的可用鍵概覽表及其影響。

3

-對於JMenuItem使用JMenuItem((String text, Icon icon)構造

-而對於JMenu嘗試使用構造這需要字符串作爲參數JMenu(String s),並且方法setIcon()

爲了在MenuItems上設置特殊的按鍵選項,使用setAccelerator()

如:

myItem.setAccelerator( KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK));