谁帮一下,我的JPopupMenu怎么捕捉不到鼠标点击事件呀??
我定义了一个JPopupMenu 的对象elm,然后又定义了一个JButton,添加了事件单击按钮显示elm,对添加了事件单击elm的一个JMenuItem后显示一个Frame,运行后单击button可以显示弹出菜单,但是单击菜单就是不能显示Frame,是怎么回事呀,所有事件函数内容都是正确的代码如下:
 import java.awt.Component;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;public class ExportlogMenu extends JPopupMenu { /**
 * 
 */
private static final long serialVersionUID = -2512149702944443669L;

public JMenuItem Item_txt = null,Item_xls = null;

public ExportlogMenu(Component c,int x,int y)
{
super("导出为");
Item_txt = new JMenuItem("导出为文本文件(*.txt)");
Item_xls = new JMenuItem("导出为Excel表(*.xls)");
this.add(Item_txt);
this.add(Item_xls);
this.show(c, x, y);
}
}
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JButton;
public class w_logview extends JFrame{
   public w_logview()
    { public JButton btn = new JButton("test");
      btn.addMouseListener(cz);
                           MouseListener cz = new MouseListener(){
  if(e.getSource() == btn_explog)
{
showPopupMenu(btn_explog,e.getX(),e.getY());
//setFileSavePos();
}

} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {}
        }
    };    public void showPopupMenu(Component t,int x,int y)
    {
     elm = new ExportlogMenu(t,x,y);
  //   setFileSavePos();
     elm.addMouseListener(new MouseListener(){ public void mouseClicked(MouseEvent e) {
// TODO 自动生成方法存根
      if(e.getSource()== elm.Item_txt){   //???问题就是这个消息捉不到
setFileSavePos();  ///已定义的函数,经测试是正确的
}
} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {}
    
     });
    }
}希望大家帮一下我!

解决方案 »

  1.   

    是ActionListener事件elm.addActionListener(new ActionListener()
    {
       public void actionPerformed(ActionEvent e) {
            //;
        }
    });
      

  2.   

    一般的JPopupMenu可能没法实现这种功能,何不用JDialog定制一个呢?
      

  3.   

    谢谢了,问题我已经解决了,正如smy19989()所说,添加ActionListener就可以了,   马上结帖,但是我还是想知道为什么JPopupMenu为什么不能捕获鼠标消息呢??