2

我试图弄清楚如何在Java中的光标周围制作一个黄色圆圈。问题是我们有一个屏幕录像机(显然)记录屏幕。在 Google 上使用关键字“Java 中光标周围的黄色圆圈”只会让我了解如何在 MAC、WM 和其他应用程序上的光标周围添加黄色圆圈,而不是如何在用户计算机上的 Java 中添加应用程序启动。

如何在不使用现有图像的情况下做到这一点?绘制一个带有一些不透明度的简单黄色圆圈将是最简单的事情,使其跟随屏幕上的鼠标。而且,如果可以在用户单击鼠标按钮时使其消失并重新出现,那就太棒了。

4

2 回答 2

2

可以通过将 MouseMotionListener 附加到您的组件来做到这一点,但需要一些工作才能使其完全按照您的要求工作。

我会从这样的事情开始:

private static final double RADIUS    = 15.0;
private static final double DIAMETER  = 2.0 * RADIUS;
private static final Color  XOR_COLOR = Color.yellow;

private static Shape m_circle = null;

@Override
public void mouseMoved(MouseEvent e)
{
    Graphics2D g2     = (Graphics2D) getGraphics();
    Point      p      = e.getPoint();
    Shape      circle = new Ellipse2D.Double(p.getX() - RADIUS, p.getY() - RADIUS, DIAMETER, DIAMETER);

    clearCircle(g2);

    g2.setXORMode(XOR_COLOR);
    g2.draw(circle);
    g2.setPaintMode();

    m_circle = circle;
}

private void clearCircle(Graphics2D g2)
{
    if (m_circle != null)
    {
        g2.setXORMode(XOR_COLOR);
        g2.draw(m_circle);
        g2.setPaintMode();

        m_circle = null;
    }
}

还需要确保在 mouseExited 事件上清除旧圆圈,您可以通过添加 MouseListener 来监听该事件。这也有 mousePressed/mouseReleased/mouseClicked 事件,您需要在用户单击鼠标时使其消失/重新出现。

Using XOR is convenient because it is very easy to restore the screen by repainting the same shape with the same color and style but it isn't quite what you asked for. It is possible to repair the screen by capturing an image of the area that you are about to draw the circle into. The circle can be removed from the screen by repainting the damaged area before painting a circle in a new position.

于 2012-08-12T18:45:16.703 回答
-1

无法在现有鼠标指针周围添加一个圆圈。您只能将鼠标指针设置为完整的图像。

于 2012-05-24T08:04:16.510 回答