2012-05-24 15 views
2

我想弄清楚如何在Java中的游标周围做一个黄色圆圈。事情是,我们有一个(显然)记录屏幕的屏幕录像机。在Google上使用关键词“Java中光标的黄色圆圈”只会让我学习如何在MAC,WM和其他应用程序上的光标周围添加一个黄色圆圈,而不是在用户计算机上如何在Java中执行申请开始。围绕游标在Java中的黄色圆圈

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

+0

您是否听说过“Swings”? – Subs

+0

@ michael667好吧,因为除了如何改变实际的光标之外我找不到任何东西,所以很难真正尝试做某件事。我还没有找到任何真正的例子或理论如何去做。而且我的JAVA知识也不是那么先进。我通常开发网站。 –

+0

@Subs如果你的意思是摆动,那么是的,即使我不确定这将如何帮助我找出使用什么类来使光标更清晰可见。事情是Java swing库是巨大的。我的意思是,找到鼠标听众很容易。但是很难弄清楚如何围绕鼠标做一个圆圈。 –

回答

-1

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

+0

感谢您的回答,但恐怕这不是解决方案。如果我在搜索时找到答案,我不会在这里问。问题是我不想完全改变鼠标光标。我只想在它周围创建一个黄色圆圈。而我的问题是如果没有使用图像可能。 –

+1

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

+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很方便,因为通过使用相同的颜色和样式重绘相同的形状来恢复屏幕非常简单,但它不完全符合您的要求。可以通过捕获将要绘制圆的区域的图像来修复屏幕。通过在新位置绘制圆圈之前重新绘制损坏的区域,可以将圆圈从屏幕上移除。

+0

'getGraphics()'它来自哪里? –

+0

你可以发布一个完整的工作示例吗?我尝试了一些,但没有成功。 –

+0

getGraphics()最初来自java.awt.Component,但是这段代码需要一个返回Graphics2D实例的子类,比如javax.swing.JComponent – richj