2013-02-12 81 views
0
public class cPan extends JPanel implements ActionListener{ 
    @Override 
    public void actionPerformed(ActionEvent arg0) { 


    } 
} 

我有上面的代码捕获我的JPanel中的动作。Java Swing - 从CLick获取X,Y来自

我很困惑我将如何从我的JPanel中获得x,y坐标。在那里我点击

所以,如果我点击100,200(x,y),我希望能够看到这一点。

我看了arg0的函数,但找不到有用的东西。

我哪里错了?

+2

你需要的是不是'ActionListener',但'MouseListener' – gefei 2013-02-12 10:12:36

+0

啊意义现在lookng在例如 – LmC 2013-02-12 10:29:31

回答

2

使用MouseListener代替。这样,您将获得一个MouseEvent,通过调用MouseEvent#getPoint()可以从中获得点击的点。

public class cPan extends JPanel implements MouseListener { 
    @Override 
    public void mouseClicked(MouseEvent e) { 
    Point p = e.getPoint(); 
    // or 
    int x = e.getX(); 
    int y = e.getY(); 
    } 
} 
2

ActionListener使用时通知您,那么,某种不伦不类的动作有发生。

没有办法提取关于什么引起的动作(如点击鼠标或按键动作)

要获得有关鼠标事件的信息,你需要使用连接到成分(S)你是MouseListener有兴趣监测。

退房How to use Mouse Listeners了解更多信息

2

您需要添加鼠标监听:

JPanel panel = new JPanel(); 
panel.setPreferredSize (new Dimension (640, 480)); 
panel.addMouseListener (new MouseAdapter() { 
    @Override 
    public void mouseClicked (MouseEvent e) { 
     JOptionPane.showMessageDialog(
      e.getComponent(), "X: " + e.getX() + ", Y: " + e.getY()); 
    } 
}); 

JFrame frame = new JFrame ("Click"); 
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); 
frame.getContentPane().setLayout (new BorderLayout()); 
frame.getContentPane().add (panel, BorderLayout.CENTER); 
frame.pack(); 
frame.setVisible (true);