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())时还是有同样的错误,不知为什么?请大家帮帮忙看一下,或者麻烦您请给我讲一下弹出菜单的用法,谢谢!!!
当你将textArea增加到一个Frame中时,也要调用同样的方法将popupMenu加入其中。另:为什么不用Swing而用awt呢?上面的程序如果将PopupMenu修改为JPopupMenu,MenuItem修改成JMenuItem,这个程序不就可以很好的工作了吗?