JMenu генерирует меню с другим слушателем

Мы получили проект с открытым исходным кодом Jmjrst и должны настроить и немного поработать с ним. Теперь у нас никогда не было никаких вещей JMenu, JMenuItem и Listener, так что это довольно запутанно для меня.

Я уже реализовал свой новый MenuTab и работает.

Моя проблема в том, что моя задача говорит следующее:

Каждый плагин должен иметь возможность запускаться и настраиваться.

Конфигурация должна быть реализована только в том случае, если плагин является настраиваемым.

(переведенный текст)

У нас есть метод для проверки, настраивается ли он.

Это мой код прямо сейчас:

    int length = pluginList.size();
    int i = 1;
    for (Plugins plugIn: pluginList) {
        pluginMenuItem = new JMenuItem(plug.getMenuText());
        if (plugIn.isConfigurable()) {
            pluginMenuItem.addActionListener(new MenuListner(m, this));
        }
        if (i < length) {
            pluginsMenu.addSeparator();
        }
        pluginsMenu.add(plugin);
        i++;
    }

newList — это просто список, содержащий все доступные плагины. Я думаю, что мой if (plug.isConfigurable()) установлен неправильно, потому что каждый пункт меню должен иметь возможность щелкнуть. Но не знаю, как управлять тем, что происходит, когда нажимается пункт меню (плагин), и как разделить запуск и настройку.

Изменить: у каждого плагина есть следующие методы: run() и configure(), но как добавить их в меню и разделить?

Редактировать2:

Plugins ==== The Plugins which should be added to the Menu 
pluginsMenu ==== the JMenu Object
plugIn  ==== the new JMenuButton Object

person NhatNienne    schedule 19.05.2015    source источник
comment
Ваш код и переменные сбивают с толку. что коллекция плагинов содержит элементы меню? или объект plugIn (из цикла foreach)? ,.. можете ли вы предоставить фактический фрагмент кода?   -  person Sendi_t    schedule 19.05.2015
comment
@Sendi_t Я отредактировал свой вопрос. Скажите, пожалуйста, это прояснило это или нет?   -  person NhatNienne    schedule 19.05.2015
comment
Если я правильно понимаю... у вас есть два действия 1.) конфигурация плагина 2.) запуск плагина ..... пытаетесь найти способ различить их? и когда выполнять какое действие?   -  person Sendi_t    schedule 19.05.2015
comment
ну, не совсем то, когда что использовать, но как выбрать один из двух вариантов (если он настраивается)   -  person NhatNienne    schedule 19.05.2015


Ответы (1)


Это будет зависеть от дизайна вашего пользовательского интерфейса, вы можете иметь subMenuItems под каждым плагином — один для «config», а другой для «execute/Run»,

у вас может быть один элемент меню, который у вас есть сейчас, а затем слушатель может открыть диалоговое окно, чтобы позволить пользователю выбрать конфигурацию/выполнить - это будет не лучший вариант, так как пользователям придется иметь дело с диалогом каждый раз, когда они щелкают плагин

Еще один способ, который я могу придумать, - это иметь элемент меню верхнего уровня для «конфигурации», и поэтому пользователи могут четко видеть, хотят ли они настроить или изменить их, чтобы перейти в меню «конфигурация».

Элемент SubMenu сам является элементом меню

//a submenu
pluginsMenu.addSeparator();
   submenu = new JMenu("Plugin Name");

      //add one submenuItem
      menuItem = new JMenuItem("Config");
   submenu.add(menuItem);

       //add another submenuItem
       menuItem = new JMenuItem("Run/Execute");
   submenu.add(menuItem);

//add submenu to mainPluginMenu
pluginsMenu.add(submenu);

см. фактический код здесь меню

person Sendi_t    schedule 19.05.2015
comment
хорошо, вы можете сказать мне, как я могу добавить subMenuItems? Я думаю, что я соглашусь с этим, потому что если плагин можно настроить, вы можете выбрать, хотите ли вы настроить его или запустить. если это не настраивается, то нажатие запустит его - person NhatNienne; 19.05.2015