【问题标题】:JMenu generating Menu with different ListenerJMenu 生成具有不同侦听器的菜单
【发布时间】:2015-05-19 17:43:18
【问题描述】:

我们得到了 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

【问题讨论】:

  • 您的代码和变量令人困惑。集合插件包含什么菜单项?或插件对象(来自 foreach 循环)? ,..你能提供实际的代码sn-p吗?
  • @Sendi_t 我编辑了我的问题。请告诉我这是否澄清了它。
  • 如果我理解正确...您有两个操作 1.) 插件配置 2.) 运行插件 ..... 试图找出区分两者的方法?以及何时执行哪个操作?
  • 不完全是什么时候使用哪个,而是如何选择两个选项之一(如果它是可配置的)

标签: java actionlistener jmenu


【解决方案1】:

这取决于您的用户界面设计,您可以在每个插件下拥有 subMenuItems——一个用于“配置”,另一个用于“执行/运行”,

您现在可以拥有一个 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

【讨论】:

  • 你能告诉我如何添加 subMenuItems 吗?我想我会这样做,因为如果插件是可配置的,那么您可以选择是要配置它还是运行它。如果它不可配置,那么按下它将运行它
猜你喜欢
  • 2013-03-11
  • 2014-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多