2013-02-12 82 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);