private  PopupMenu pm=new PopupMenu();
    private MenuItem manageData=new MenuItem("aaaa"); public void mouseReleased(MouseEvent e){
         if(e.getButton()==3){
           if(list.getSelectedItem()!=null){
           pm.show(e.getComponent(), e.getX(), e.getY());
           }
          }
         }
运行时出现异常,说什么参数为空……,是这里面的参数吗、?望高手指点pm.show(e.getComponent(), e.getX(), e.getY());

解决方案 »

  1.   

    把e.getComponent()改成e.getSource()试试
      

  2.   

    说什么参数为空……,你都不把具体错误弄出来???
    参考这个:
    package swing;import java.awt.PopupMenu;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.InputEvent;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;import javax.swing.JFrame;
    import javax.swing.JMenuItem;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JPopupMenu;
    import javax.swing.JSeparator;
    import javax.swing.JTabbedPane;
    import javax.swing.JTextPane;
    import javax.swing.KeyStroke;
    import javax.swing.UIManager;public class TestPopMenu extends JFrame implements MouseListener {
    private JPanel jPanel;
    private JPopupMenu JMenu;
    private JMenuItem jMenuItem1;
    private JMenuItem jMenuItem2;
    private JSeparator jSeparator;
    private JTextPane jTextPane;


    public TestPopMenu() {
    this.addMouseListener(this);
    jPanel = new JPanel();
    JMenu = new JPopupMenu();
    jMenuItem1 = new JMenuItem("全选");
    jMenuItem2 = new JMenuItem("复制");
    jMenuItem1.setAccelerator(KeyStroke.getKeyStroke('A',InputEvent.CTRL_MASK));
    jMenuItem2.setAccelerator(KeyStroke.getKeyStroke('C',InputEvent.CTRL_MASK));
    jSeparator = new JSeparator();

    JMenu.add(jMenuItem1);
    JMenu.add(jSeparator);
    JMenu.add(jMenuItem2);


    jMenuItem1.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
    action(e);
    }
    });

    setVisible(true);
    setSize(300, 400);
    } public void action(ActionEvent e){
    String str = e.getActionCommand();
    if(str.equals(jMenuItem1.getText())){
    JOptionPane.showMessageDialog(this, "全选操作", "提示信息",JOptionPane.INFORMATION_MESSAGE);
    }
    }

    public static void main(String[] args) {
    try { // 使用Windows的界面风格
    UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
    } catch (Exception e) {
    e.printStackTrace();
    }
    TestPopMenu t = new TestPopMenu();
    } public void mouseClicked(MouseEvent e) {
    // TODO Auto-generated method stub } public void mouseEntered(MouseEvent e) {
    // TODO Auto-generated method stub } public void mouseExited(MouseEvent e) {
    // TODO Auto-generated method stub } public void mousePressed(MouseEvent e) {
    if (e.getButton() == MouseEvent.BUTTON3) {
    jMenuItem1.setEnabled(true);
    jMenuItem2.setEnabled(true);
    JMenu.show(this, e.getX(), e.getY());
    } } public void mouseReleased(MouseEvent e) {
    // TODO Auto-generated method stub }
    }
      

  3.   

     问题解决,谢谢     
     public void mouseReleased(MouseEvent e){
           
               if(list.getSelectedItem()!=null){
         
             if(e.isPopupTrigger())
              pm.show(e.getComponent(), e.getX() , e.getY() );
               }
              }