繁体   English   中英

Java Swing-从CLick获取X,Y

[英]Java Swing - Get X,Y From CLick

public class cPan extends JPanel implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent arg0) {


    }
}

我有上面的代码,可以从我的JPanel内部捕获动作。

我对如何从JPanel中获取x,y坐标感到困惑,例如我单击的位置

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

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

我要去哪里错了?

public class cPan extends JPanel implements ActionListener{

应该

public class cPan extends JPanel implements MouseListener{

Oracle turorial中的更多信息如何编写鼠标侦听器以及与错误的侦听进行比较如何编写 MouseEvent 的动作侦听器

ActionListener用于在发生某种非描述性操作时通知您。

无法提取有关导致该动作的原因的信息(例如鼠标单击或按键动作)

要获取有关鼠标事件的信息,您需要使用一个MouseListener附加到您要监视的组件上。

查看如何使用鼠标侦听器以获取更多信息

请改用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();
  }
}

您需要添加鼠标侦听器:

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM