2

我正在覆盖getActions基于 Java 的框架中的方法,这是一个托管在这里JHotDraw的开源项目。该方法在. 我可以使用下面的代码正确添加额外的上下文菜单选项。我需要知道如何将子菜单添加到上下文菜单。getActionsFigureDrawingview

@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;
}
4

1 回答 1

3

支持添加子菜单。

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

相反,右键单击org.jhotdraw.draw.DefaultDrawingViewjavax.swing.JPopupMenuin的实例处理org.jhotdraw.draw.DelegationSelectionTool,如 中所示org.jhotdraw.samples.mini.EditorSample。特别是,该AbstractAction属性Actions.SUBMENU_KEY标识子菜单名称。设置DEBUG = true看看效果。目前没有定义。

于 2012-12-01T21:24:00.140 回答