P296页最后那段代码if ((event.getModifiersEx() & InputEvent.BUTTON3_DOWN_MASK) != 0)
... // code for right click这段代码真的能处理鼠标右击事件吗?大家看一下下面这段代码,为什么我点击右键没有反应?import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class TestFrame extends JFrame 
{
public TestFrame()
{
setPreferredSize(new Dimension(400, 400));
addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent event)
{
if ((event.getModifiersEx() & InputEvent.BUTTON3_DOWN_MASK) != 0)
System.out.println("鼠标右键点击");
}
});
}

public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
JFrame frame = new TestFrame();
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
});
}
}

解决方案 »

  1.   

    经测试如果将事件改成mousePressed可以执行。如果是如你写的用mouseClicked不能执行,具体原因不太清楚,据我推测可能是本方法内部定义的就是响应鼠标按下事件的,而不响应鼠标点击事件(没有看源码,所以不太清楚)。如有高人知道原因,希望分享!
      

  2.   

    直接用getButton() 这个函数就行,
    如果它的返回值是MouseEvent.BUTTON3,那就是右键;
    如果它的返回值是MouseEvent.BUTTON2,那就是中键;
    如果它的返回值是MouseEvent.BUTTON1,那就是左键。
    希望答案能对你有所帮助!
      

  3.   

     public void jTable1_mousePressed(MouseEvent e) {        if( e.getButton() == MouseEvent.BUTTON3 ){
            jPopupMenu1.show(jTable1,e.getX(),e.getY());
           }    }
      

  4.   

    貌似我无论改写为mousePressed还是mouseReleased都不行啊
    算了还是采用2楼的方法吧