java 的popupmenu出错

来源:百度知道 编辑:UC知道 时间:2024/06/18 00:29:31
原程序:
import java.awt.*;
import java.awt.event.*;
public class PopupmenuTest extends MouseAdapter implements MouseListener
{
Frame f;
PopupMenu pm;
public static void main(String argv[])
{
new PopupmenuTest();
}
public PopupmenuTest()
{
f=new Frame("PopupmenuTest");
f.addMouseListener(this);
MenuItem popup1=new MenuItem();
MenuItem popup2=new MenuItem();
pm=new PopupMenu();
pm.add(popup1);
pm.add(popup2);
f.setSize(100,100);
f.setVisible(true);
}
public void mouseClicked(MouseEvent e)
{
pm.show(f,e.getX(),e.getY());
}
}

可以正常编译,也可以运行,可是点鼠标右键时不能出现快捷菜单,出现下面的错误:

Exception occurred during event dispatching:
java.lang.NullPointerException: parent is null
at java.awt.PopupMenu.show(Unknown Source)
at PopupmenuTest.mouseClicked(PopupmenuTest.java:25)
at j

还是用Swing吧,用JPopupMenu就没问题
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class PopupmenuTest extends MouseAdapter implements MouseListener
{
JFrame f;
JPopupMenu pm;
public static void main(String argv[])
{
new PopupmenuTest();
}
public PopupmenuTest()
{
f=new JFrame("PopupmenuTest");
f.addMouseListener(this);
JMenuItem popup1=new JMenuItem();
JMenuItem popup2=new JMenuItem();
pm=new JPopupMenu();
pm.add(popup1);
pm.add(popup2);
f.setSize(100,100);
f.setVisible(true);
}
public void mouseReleased(MouseEvent e)
{
if(e.isPopupTrigger())
{
pm.show(f,e.getX(),e.getY());
}
}
}