JMenu使用不同的监听器

时间:2015-05-19 17:43:18

标签: java actionlistener 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())设置不正确,因为每个menupoint都需要能够被点击。但是idk如何管理菜单点(插件)被点击时发生的事情,以及如何分开运行和配置。

编辑:每个插件都有以下方法:run()configure() 但是如何将它们添加到菜单中并且能够将它们分开?

Edit2:

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

1 个答案:

答案 0 :(得分:1)

这取决于您的用户界面设计,每个插件下都可以有 subMenuItems - 一个用于说“config”,另一个用于“执行/运行”,

你现在可以有一个menuItem,然后监听器可以弹出对话框让用户选择config / execute - 这不是最好的选择,因为用户每次点击插件时都必须处理对话< / p>

我能想到的另一种方法是有一个顶级menuItem用于“配置”,因此用户可以清楚地看到他们是否想要配置或更改他们必须转到“配置”菜单

SubMenu项目是一个menuItem本身

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

在此处查看实际代码menu