在Java的游标附近的黄色圈子

时间:2012-05-24 07:25:52

标签: java cursor geometry marker

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

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

2 个答案:

答案 0 :(得分: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事件,你需要它才能在用户的鼠标点击时消失/重新出现。

使用XOR非常方便,因为通过重新绘制具有相同颜色和样式的相同形状来恢复屏幕非常容易,但它并不是您所要求的。可以通过捕获您要绘制圆圈的区域的图像来修复屏幕。在绘制新位置的圆圈之前,可以通过重新绘制受损区域来从屏幕上移除圆圈。

答案 1 :(得分:-1)

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