Java Gui Menubars - PullRequest
       51

Java Gui Menubars

0 голосов
/ 09 января 2012

Я практикую свои навыки графического интерфейса с Java, и я делал меню и строки меню. Они имеют смысл для меня просто отлично, но у меня есть вопрос о том, где я могу узнать о них больше.

В основных меню, которые я сделал, функция ActionListener actionPerformed должна находиться в том же классе, что и меню, а элемент, который изменяется в меню, также должен находиться в классе как меню.

Что, если я хочу иметь меню, которое влияет на JPanel, который создается конструктором из другого класса и помещается в мой фрейм ... Я не уверен, как меню может изменить его компоненты.

Любые советы, советы или сайты, которые вы, ребята, сочли полезными, были бы отличными, заранее спасибо.

1 Ответ

3 голосов
/ 09 января 2012

Я считаю полезным обернуть действия меню в объекте Action.Это включает в себя:

  1. Имя и значок действия
  2. Если оно включено или отключено
  3. (для действия флажка), если выбрано
  4. Сочетание клавиш для действия
  5. Реализация прослушивателя действий

Вы можете определить подкласс AbstractAction в классе, для данных которого действует действие.Затем определите получатель для этого действия, чтобы ваш код построения меню мог его получить.Вы можете добавить Action непосредственно в меню - для него автоматически создается MenuItem.

Другое преимущество действий заключается в том, что это же действие можно использовать в кнопке, панели инструментов и т. Д.

class ModelClass {
   int value;
   Action incAction = new AbstractAction("Increment") {
      public void actionPerformed() {
         value++;
         setEnabled(value < 10);
      }
   };

   public Action getIncAction() {
      return incAction;
   }
}

class UIClass {
   void buildMenu() {
      JMenu menu = new JMenu("Model");
      menu.add(model.getIncAction());
   }
}
...