2014-07-19 87 views
-1

下面是代码:JFrame中不显示的JMenuBar

private void initComponent() { 
    // TODO Auto-generated method stub 
    setTitle("Pizza Order System"); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setPreferredSize(new Dimension(1000, 900)); 
    menu = new JMenu(); 
    menuItem = new JMenuItem(); 
    menuItem.setText("About"); 
    menu.add(menuItem); 
    Pane = new JDesktopPane(); 
    menuBar = new JMenuBar(); 
    menuBar.add(menu); 
    mainPanel = new JPanel(); 
    GroupLayout panelLayout = new GroupLayout(mainPanel); 
    mainPanel.setLayout(panelLayout); 
    setJMenuBar(menuBar); 
    GroupLayout layout = new GroupLayout(getContentPane()); 
    getContentPane().setLayout(layout); 
    layout.setHorizontalGroup(
      layout.createParallelGroup(GroupLayout.Alignment.LEADING) 
      .addComponent(Pane) 
      .addGroup(layout.createSequentialGroup() 
        .addContainerGap() 
        .addComponent(mainPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
        .addContainerGap()) 
      ); 
    layout.setVerticalGroup(
      layout.createParallelGroup(GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
        .addGap(5, 5, 5) 
        .addComponent(mainPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
        .addComponent(Pane, GroupLayout.DEFAULT_SIZE, 804, Short.MAX_VALUE)) 
      ); 
    pack(); 
    setLocationRelativeTo(null); 

} 

对于我的代码,我已经初始化菜单,菜单项,菜单栏,添加菜单项到菜单,添加菜单到菜单栏,并设置菜单栏已经,看起来像一切看起来不错,但JmenuBar不想出现....

回答

-1

只需使用此代码,你会得到...在这里这段代码是为了使记事本像结构,你可以尝试此用途..

 import javax.swing.*; 
     import java.awt.*; 
     import java.awt.event.*; 
     class JNotepad extends JFrame implements ActionListener 
     { 
      JMenuBar mb; 
     JMenu f,e,fo,v,h; 
     JMenuItem f_i1,f_i2,f_i3,f_i4,e_i1,e_i2,fo_i1,v_i1,h_i1; 
     JTextArea t; 
     public JNotepad() 
     { 
     mb=new JMenuBar(); 
     setSize(500,500); 
     setTitle("JNotepad"); 
     setVisible(true); 
      f=new JMenu("File"); 
      e=new JMenu("Edit"); 
     fo=new JMenu("Format"); 
     v=new JMenu("View"); 
      h=new JMenu("Help"); 
      f_i1=new JMenuItem("new"); 
      f_i2=new JMenuItem("open"); 
      f_i3=new JMenuItem("save"); 
      f_i4=new JMenuItem("save as"); 
      e_i1=new JMenuItem("undo"); 
      e_i2=new JMenuItem("paste"); 
      fo_i1=new JMenuItem("font"); 
      v_i1=new JMenuItem("status bar"); 
      h_i1=new JMenuItem("view help"); 
      mb.add(f); 
      mb.add(e); 
      mb.add(fo); 
      mb.add(v); 
      mb.add(h); 
      f.add(f_i1); 
      f.add(f_i2); 
      f.add(f_i3); 
      f.add(f_i4); 
      e.add(e_i1); 
      e.add(e_i2); 
      fo.add(fo_i1); 
      v.add(v_i1); 
      h.add(h_i1); 
      setJMenuBar(mb); 
      } 
     public void actionPerformed(ActionEvent ae) 
      { 
      if(ae.getSource()==f_i1) 
      { 
     JNotepad obj=new JNotepad(); 
     obj.setVisible(true); 
     setVisible(false); 
     }} 
     public static void main(String []args) 
     { 
     JNotepad stu =new JNotepad(); 
     }} 

setJMenubar(mb);使用最后的控制器,然后它会出现.......用于此代码。

+0

其实这并没有回答这个问题。另外我不认为OP要做记事本。我认为你的小部件的命名也很糟糕。 – pzaenger

+0

是的,我同意你的观点,但是你可以把JMenuItem命名为你的愿望......并且你只能使用语句setJmenuBar(mb);在costructer结束时,它会出现.. – Surajchamp

+0

该OP已使用'setJMenuBar(menuBar);',因此这不是问题。 – pzaenger

2

你的menu = new JMenu();没有提供一个String参数,所以它没有任何显示。尝试将其更改为menu = new JMenu("sometext");并查看它是否显示。

+0

+1听起来对我来说是合理的。 – camickr