构建一个易于管理的JPopupMenu

1,构建一个Action

public Action bind(String name, final Action action, String iconUrl) {
                return new AbstractAction(name, (iconUrl != null) ? new ImageIcon(
                                BasicGraphEditor.class.getResource(iconUrl)) : null) {
                        public void actionPerformed(ActionEvent e) {
                                action.actionPerformed(new ActionEvent(getGraphComponent(), e
                                                .getID(), e.getActionCommand()));
                        }
                };
        }

 其中name为menu名,action为具体的操作行为,iconUrl当要显示操作图片前缀或者后缀的时候才需要。

2,上面的action参数构造方法可以参考

public static class HistoryAction extends AbstractAction
        {

                /**
                 * 
                 */
                protected boolean undo;

                /**
                 * 
                 */
                public HistoryAction(boolean undo)
                {
                        this.undo = undo;
                }

                /**
                 * 
                 */
                public void actionPerformed(ActionEvent e)
                {
                        BasicGraphEditor editor = getEditor(e);

                        if (editor != null)
                        {
                                if (undo)
                                {
                                        editor.getUndoManager().undo();
                                }
                                else
                                {
                                        editor.getUndoManager().redo();
                                }
                        }
                }
        }

 

3,添加到JPopupMenu中去

JPopupMenu.add(...bind("name", new HistoryAction(), "/com/icon.jpg"))
 

你可能感兴趣的:(jpopupmenu)