首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中光标周围的黄色圆圈

Java中光标周围的黄色圆圈
EN

Stack Overflow用户
提问于 2012-05-24 15:25:52
回答 2查看 2.1K关注 0票数 2

我正在尝试在Java中如何在光标周围画一个黄色圆圈。问题是,我们有一个屏幕录像机,它(显然)可以记录屏幕。在Google上使用关键字“Java中光标周围的黄色圆圈”只会带我到如何在MAC、WM和其他应用程序上添加光标周围的黄色圆圈,而不是如何在应用程序启动时在用户计算机上的Java中添加黄色圆圈。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-24 16:04:17

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

票数 -1
EN

Stack Overflow用户

发布于 2012-08-13 02:45:17

可以通过将MouseMotionListener附加到您的组件来实现这一点,但是需要做一些工作才能让它完全按照您想要的方式工作。

我会从下面这样的东西开始:

代码语言:javascript
复制
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很方便,因为通过用相同的颜色和样式重新绘制相同的形状来恢复屏幕非常容易,但这并不完全符合您的要求。可以通过捕获要将圆绘制到的区域的图像来修复屏幕。在新位置绘制圆之前,可以通过重新绘制损坏的区域将圆从屏幕上删除。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10732978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档