import java.awt.Component;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;import javax.swing.JTextArea;public class PopupListener extends MouseAdapter {
PopupMenu popupMenu;
static MenuItem popupMenu_Cut;
static MenuItem popupMenu_Copy;
static MenuItem popupMenu_Paste;
static MenuItem popupMenu_Delete;
static MenuItem popupMenu_SelectAll; public void createPopupMenu() { popupMenu = new PopupMenu();
popupMenu_Cut = new MenuItem("剪切(T)");
popupMenu_Copy = new MenuItem("复制(C)");
popupMenu_Paste = new MenuItem("粘贴(P)");
popupMenu_Delete = new MenuItem("删除(D)");
popupMenu_SelectAll = new MenuItem("全选(A)"); popupMenu.addSeparator();
popupMenu.add(popupMenu_Cut);
popupMenu.add(popupMenu_Copy);
popupMenu.add(popupMenu_Paste);
popupMenu.add(popupMenu_Delete);
popupMenu.addSeparator();
popupMenu.add(popupMenu_SelectAll); } public void mousePressed(MouseEvent e) {
isShowPopup(e);
} public void mouseReleased(MouseEvent e) {
isShowPopup(e);
} private void isShowPopup(MouseEvent e) {
createPopuMenu();
if (e.isPopupTrigger())
popupMenu.show(e.getComponent(), e.getX(), e.getY());
}}
这段代码有错误吗?可是每当textArea.addMouseListener(new PopupListener());点击右键时就会有 “parent is null”这样的错误
当我把popupMenu.show(e.getComponent(), e.getX(), e.getY())改为popupMenu.show((JTextArea)e.getComponent(), e.getX(), e.getY())时还是有同样的错误,不知为什么?请大家帮帮忙看一下,或者麻烦您请给我讲一下弹出菜单的用法,谢谢!!!

解决方案 »

  1.   

    使用awt的方法增加右键菜单时,需要将你的PopupMenu做为组件加入到Frame中,这样就可以避免parent is null的错误。
    当你将textArea增加到一个Frame中时,也要调用同样的方法将popupMenu加入其中。另:为什么不用Swing而用awt呢?上面的程序如果将PopupMenu修改为JPopupMenu,MenuItem修改成JMenuItem,这个程序不就可以很好的工作了吗?
      

  2.   

    同感,我用swing做项目的时候,一路顺顺利利
      

  3.   

    难道是:JFrame.add(JpopupMenu);   ?这样?
      

  4.   

    我在做树的右键事件,比较好用,顶,用swing