0

我正在尝试使用多维数组创建一个完整的菜单栏。

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

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]);

但它只会导致 menuBar 上的第一项被“保存”替换。

有任何想法吗?

另外,有没有可能private JMenuItem[][] menuItem = new JMenuItem[5][];让我不必设置每个菜单栏项目的大小,例如文件 = 5 个项目,编辑 = 5 个项目等

谢谢

4

2 回答 2

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:这仅适用于“文件”菜单项(在零位)。

于 2013-10-06T13:13:15.373 回答
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 需要知道您要声明的数组的两个维度的大小,您不能让其中一个保持打开状态。

于 2013-10-06T13:22:05.210 回答