从Java中JHotDraw覆盖创建的getActions在上下文菜单的子菜单从Java中JHotD

2019-05-12 08:56发布

我重写getActions在基于Java框架方法JHotDraw ,主持一个开源项目在这里 。 该方法getActions创建一个右键上下文菜单FigureDrawingview 。 我可以正确添加使用下面的代码addidtional上下文菜单选项。 我需要知道如何将子菜单添加到上下文菜单。

@Override
public Collection<Action> getActions(Point2D.Double p) {
  Collection<Action> popupMenu = new ArrayList<Action>();
  popupMenu.add(new AbstractAction("add Context Option 1") {
    public void actionPerformed(ActionEvent event) {
      preformThisMethod("params");
    }
  });
  popupMenu.add(new AbstractAction("add Context Option 2") {
    public void actionPerformed(ActionEvent event) {
      preformThisMethod("params");
    }
  });
  // How to add a sub menu to the context menu?
  return popupMenu;
}

Answer 1:

将子菜单支持。

org.jhotdraw.gui.JPopupButton扩展JButton提供整个框架使用的弹出式菜单。 该方法add(javax.swing.JMenu submenu)可被用于构造分层子菜单。 例如, org.jhotdraw.samples.draw.DrawingPanel增加了Zoom子菜单中最右侧的弹出菜单中creationToolbar ,与其他杂项编辑动作一起。 该方法createFontButton()org.jhotdraw.draw.action.ButtonFactory是用于另一示例addFontButtonsTo()的编辑器。

与此相反,在右击org.jhotdraw.draw.DefaultDrawingView通过的实例处理javax.swing.JPopupMenuorg.jhotdraw.draw.DelegationSelectionTool ,如图org.jhotdraw.samples.mini.EditorSample 。 特别是, AbstractAction财产Actions.SUBMENU_KEY标识子菜单的名称。 设置DEBUG = true看到效果。 都不是,目前所定义。



文章来源: Creating a submenu in context menu from overridden getActions in Java JHotDraw