07/07/09 17:25:50
処理名称は一緒だが処理内容が異なるのなら、
(Wordなら、文字の削除とオートシェイプの削除、など)
ActionMapで振り分けるとか。
JPanel p1 = new JPanel();
p1.getActionMap().put("edit", new AbstractAction(){
public void actionPerformed(ActionEvent e){
// 編集時の処理
}
};
p1.getActionMap().put("delete", new AbstractAction(){
public void actionPerformed(ActionEvent e){
// 削除時の処理
}
};
のようなJPanelを用意しておいて、JPopupMenu表示時には
ActionMapからJMenuItemを組み立てる。こんな感じ
private JPopupMenu createMenu(ActionMap map){
JPoppuMenu menu = new JPopupMenu();
JMenuItem editItem = new JMenuItem("編集");
if(map.get("edit") != null){
editItem.setAction(map.get("edit"));
} else {
editItem.setEnable(false);
}
menu.add(editItem);
// 以下略
return menu;
}