2013-10-06 3 views
0

Я пытаюсь создать полную панель меню с использованием многомерных арари.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 в меню Файл.

У меня есть этот код, чтобы добавить на второй цикл:

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

но это просто вызывает первый элемент на Menubar быть заменен на «Сохранить».

Любые идеи?

Кроме того, не возможно ли иметь private JMenuItem[][] menuItem = new JMenuItem[5][];, так что мне не нужно устанавливать размер каждого элемента menuBar, например. Файл = 5 пунктов, Edit = 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

ОК, но тогда как бы добавить еще один набор элементов меню, сделайте элемент меню «Изменить»? MenuItem [1] [0] .Добавьте (MenuItem [0] [т])? – obious

Смежные вопросы