2013-10-06 65 views
0

我正尝试使用多维ararys创建完整的菜单栏。Java:使用多维数组创建Menubar

到目前为止,我有这样的代码:

private JMenuBar menuBar = new JMenuBar(); 
private JMenuItem[][] menuItem = new JMenuItem[5][5]; 
private String[] menuBarItemNames = {"File", "Edit", "Database", "View", "Help"}; 
private String[] menuBarFileItemNames = {"Save", "Refresh", "Next", "Previous","Exit"}; 

view() { 

    setJMenuBar(menuBar); 
    for(int u = 0; u < menuItem.length; u++){ 

     menuItem[u][0] = new JMenu(menuBarItemNames[u]); 
      for(int t = 0; t < menuBarFileItemNames.length; t++){ 
//Code to add 'File' child items to the 'File' MenuBarItem 

      } 

     menuBar.add(menuItem[u][0]); 

    } 

我竭力要弄清楚如何将menuBarFileItems添加到文件菜单。

我有这样的代码添加到第二个for循环:

menuItem[0][t] = new JMenuItem(menuBarFileItemNames[t]); 

,但它只是导致在菜单栏上的第一个项目被“保存”来代替。

任何想法?

另外,是不是可以有private JMenuItem[][] menuItem = new JMenuItem[5][];,以便我不必设置每个menuBar项目的大小,例如,文件= 5个项目,编辑= 5项等

感谢

回答

0

试试:

... 
    menuItem[u][0] = new JMenu(menuBarItemNames[u]); 
      for(int t = 0; t < menuBarFileItemNames.length; t++){ 
        menuItem[0][t].add(new JMenuItem(menuBarFileItemNames[t])); 
      } 
... 

ATT:这仅适用于 “文件” 菜单项(零位置)。

+0

谢谢,但有没有办法创建和添加非匿名JMenuItems? – obious

0

我想你想要的是这样的:

private void view() 
    { 

    setJMenuBar(menuBar); 
    for (int u = 0; u < menuItem.length; u++) 
    { 

     menuItem[u][0] = new JMenu(menuBarItemNames[u]); 
     if (u == 0) 
     { 
     for (int t = 1; t <= menuBarFileItemNames.length; t++) 
     { 
      // Code to add 'File' child items to the 'File' MenuBarItem 
      menuItem[0][t] = new JMenuItem(menuBarFileItemNames[t-1]); 
      menuItem[0][0].add(menuItem[0][t]); 
     } 
     } 

     menuBar.add(menuItem[u][0]); 

    } 
    } 

如果你更换菜单栏上的第一个项目,那么你要添加到菜单栏,没有菜单项。

不,Java需要知道您声明的数组的两个维度的大小,您不能让其中一个打开。

+0

谢谢,但你介意解释menuItem [0] [0] .add(menuItem [0] [t])? – obious

+0

我假设你想要每个子数组的第0个元素来保存菜单,其余的元素来保存子菜单。您在其菜单中添加了一个子菜单,因此menuItem [0] [0]代表菜单,子菜单位于1到t之间。我不会这样做,我自己 - 我会有一个拥有菜单及其所有子菜单的类,并且有一组这样的类,但是我试图将它应用到您已经使用的数据结构中。 – arcy

+0

好的,但那么我怎么会添加另一组menuItems做'编辑'menuBar项目?菜单项[1] [0]。新增(菜单项[0] [吨])? – obious