java - 无法向位于其他类的 `paintComponent()` 方法提供鼠标坐标

标签 java swing jframe mousemotionlistener

我正在创建一个简单的程序,它可以在鼠标所在的任何位置绘制(显示)我的图像。所以图像随着鼠标箭头移动。

为此,我创建了一个 JFrame我添加了 MouseMotionListener和一个 Image通过名为 Frame 的类进入其中。图像是使用 imageComponent 添加的类。

MouseMotionListener我正在获取鼠标坐标,但无法理解如何提供这些 xy坐标为paintComponent方法,以及如何在每次移动鼠标时重新绘制它。这是我的代码:

main() Practice中的方法类:

public class Practice {
public static void main(String[] args) {
  EventQueue.invokeLater(new Runnable(){
      public void run(){
          JFrame frame = new Frame();
          frame.setSize(500,500);
          frame.setVisible(true);
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      }
  });

} 
}

Frame添加监听器和 ImageComponent 的类到框架。

class Frame extends JFrame{
Frame(){
    add(new imageComponent());
    addMouseMotionListener(new MouseAdapter(){
        public void mouseMoved(MouseEvent me){
            int x = me.getX();
            int y = me.getY();
            repaint();
        }
    });

}
}

imageComponent类,从指定路径绘制图像:

class imageComponent extends JComponent{
Image img;
int x,y;
imageComponent(){
    img = new ImageIcon("C:\\Users\\Kaushal28\\Desktop\\image.png").getImage();    
}

 public void paint(Graphics g){
    g.drawImage(img, x, y, null);
}
}

在上面的类(class)中,我声明了 xy :鼠标坐标。 我想从听众那里得到这一点,但不明白如何做到这一点。请有人帮忙!

编辑: 如果我添加 mouseMotionListenerimageComponent那么它给出 this错误:

最佳答案

让 imageComponent 添加鼠标监听器:

class imageComponent extends JComponent {

    Image img;
    int x, y;
    imageComponent() {
        addMouseMotionListener(new MouseAdapter() {
            public void mouseMoved(MouseEvent me) {
                x = me.getX();
                y = me.getY();
                repaint();
            }
        });
        img = new ImageIcon(/* path to image */).getImage();
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(img, x, y, null);
    }
}

关于java - 无法向位于其他类的 `paintComponent()` 方法提供鼠标坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37522007/

相关文章:

java - maketext 不适用于参数

java - 值无法解析或不是字段

java - JOptionPane YES/No 选项确认对话框问题

java - 如何确定正在查看 JScrollpane 中的哪个 JPanel?

java - 来自其他类的 JFrame/JPanel 绘图

Javadoc doclet : Get "@Nullable" annotation (javax). 如何在 doclet 中获取该注释?

java - IntelliJ IDEA 脚本编写

java - 从数据库中获取年份

java - 当 JPanel 应该填充 JFrame 时,它​​周围有一点额外的空间

java - 将 JFrame 加载到 html 中