【问题标题】:How do I get a Graphic2D object to follow a mouse pointer exactly in Java?如何让 Graphic2D 对象在 Java 中完全跟随鼠标指针?
【发布时间】:2012-01-05 21:17:57
【问题描述】:

在下面的代码中,我只是使用鼠标侦听器来获取鼠标的 XY 坐标,然后调用重绘。在paint 方法中,我使用相同的XY 坐标作为位置绘制了一个矩形。矩形确实跟随但距离鼠标指针有一段距离。我希望矩形的左上角可以触摸鼠标指针。

我做错了吗?

为什么我的鼠标指针和 Rectangle 对象之间有距离?

public void mouseMoved(MouseEvent e){
    x = e.getX();
    y = e.getY();

    repaint();
}

public class Canvas extends JPanel{
    Canvas(){}

    public void paint(Graphics g){
        Graphics2D g2 = (Graphics2D)g;
        g2.setPaint(Color.red);
        g2.fillRect(x, y, 50, 50);          
    }
}

【问题讨论】:

    标签: java swing coordinates graphics2d mouse-listeners


    【解决方案1】:
    1. 不要调用你的类 Canvas,有一个同名的 AWT 组件,所以它会变得混乱。

    2. 自定义绘画是通过覆盖 JPanel 的 paintComponent() 方法而不是 paint() 方法来完成的。

    3. 您没有显示将 MouseListener 添加到面板的位置。您可能正在将其添加到框架中。

    如果您需要更多帮助,请发布您的 SSCCE 来说明问题。

    【讨论】:

    • 正确,我将 MouseListener 添加到框架中。也感谢其他建议和信息。
    猜你喜欢
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 2012-02-20
    相关资源
    最近更新 更多