从Java JHotDraw中重写的getActions在上下文菜单中创建子菜单

从Java JHotDraw中重写的getActions在上下文菜单中创建子菜单,java,swing,contextmenu,Java,Swing,Contextmenu,我正在重写基于Java的框架中的getActions方法,这是一个托管的开源项目。方法getActions在Drawingview中的Figure上创建一个右键单击上下文菜单。我可以使用下面的代码正确添加其他上下文菜单选项。我需要知道如何在上下文菜单中添加子菜单 @Override public Collection<Action> getActions(Point2D.Double p) { Collection<Action> popupMenu = new Ar

我正在重写基于Java的框架中的
getActions
方法,这是一个托管的开源项目。方法
getActions
Drawingview
中的
Figure
上创建一个右键单击上下文菜单。我可以使用下面的代码正确添加其他上下文菜单选项。我需要知道如何在上下文菜单中添加子菜单

@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;
}
@覆盖
公共集合getActions(Point2D.p){
Collection popupMenu=new ArrayList();
添加(新的抽象操作(“添加上下文选项1”){
已执行的公共无效操作(操作事件){
方法(“参数”);
}
});
添加(新的抽象操作(“添加上下文选项2”){
已执行的公共无效操作(操作事件){
方法(“参数”);
}
});
//如何将子菜单添加到关联菜单?
返回弹出菜单;
}

支持添加子菜单

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


相反,右键单击
org.jhotdraw.draw.DefaultDrawingView
org.jhotdraw.draw.DelegationSelectionTool
中的
javax.swing.jpopmenu
实例处理,如
org.jhotdraw.samples.mini.EditorSample
所示。特别是,
AbstractAction
属性
Actions.SUBMENU\u键
标识子菜单名。设置
DEBUG=true
以查看效果。目前没有定义。您尝试过吗?我希望我可以使用
jpopmenu
aproach。我必须使用框架方法{家庭作业要求}。我在一门软件工程课上,对如何实现功能有着松散的要求,只要我们使用JHotDraw框架。这意味着我需要重写某些方法,比如
getActions
。我甚至不确定是否可以使用JHotDraw框架的这个
操作
收集方法创建子菜单,这只是实现所需功能的一种非常方便和直观的方式。经过数小时的努力,我认为,鉴于框架的结构处理上下文菜单,子菜单是不可能的。