У меня есть JMenuBar, заполненный элементами меню, включая разделители. По умолчанию у меня отключен пункт меню «Сохранить», и теперь мне нужно включить его, если пользователь начинает вводить текст (в основном пользователь не может сохранить документ, если он его не изменил). Но моя проблема заключается в том, чтобы перебирать каждый элемент меню, чтобы изменить «Сохранить» с отключенного на включенное.Как определить, является ли jmenuitem разделителем
Я попытался использовать цикл вложенных циклов, чтобы получить имя на основе индекса, но получаю исключение, когда цикл попадает в разделитель.
int count = frame.getJMenuBar(). GetMenuCount();
for(int i = 0; i < count; i++) {
int itemCount = frame.getJMenuBar().getMenu(i).getItemCount();
for (int j = 0; j < itemCount; j++) {
System.out.println(frame.getJMenuBar().getMenu(i).getItem(j).getAccessibleContext().getAccessibleName());
}
}
В основном я пытаюсь, во втором цикле, проверить имя меню «Сохранить», а затем включить его таким образом. Я не хочу жестко кодировать индексы, пока я не изменю меню позже по дороге.
Я также пробовал вручную вводить индексы вместо использования циклов (вот как я узнал, что это было вызвано seperator.Так теперь, что я хочу сделать, это во втором цикле, проверьте, не является ли элемент menuitem является разделителем, но я не уверен, как это сделать. Я пробовал поиск в google и ничего не придумал. Любые предложения?
Первое, что я хотел бы сделать, это использовать API 'Action', см. [Как использовать действия] (http://docs.oracle.com/javase/tutorial/uiswing/misc/action.html) , 'JMenu' s сложны, поскольку они строят свой контент из информации, собранной из 'JMenuItem', и не склонны размещать их непосредственно на самом' JMenu' – MadProgrammer
. Почему бы просто не ссылаться на меню 'Сохранить 'вместо это взломать? – Arvind