我正在寻找为Java中的绘图应用程序创建自定义鼠标光标。该应用程序需要能够在Windows上运行,并且由于窗口中与游标大小相关的限制(32 * 32 px),因此无法使用内置游标功能。
我尝试使用MouseMotionListener在当前鼠标位置绘制图像,这在我在空面板上绘制时有效。图像正确“跟随”鼠标,这不是问题。
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(cursorimage, x, y, null);
}
但是,当我将子项添加到此面板时,鼠标光标将显示在子项后面。例如,当我添加几个按钮时,鼠标会在按钮后面显示其图像。如何将光标图像移动到前景?
我尝试了一些改变paintComponent中的顺序的事情:
@Override
public void paintComponent(Graphics g) {
g.drawImage(cursorimage, x, y, null);
super.paintComponent(g);
}
我也尝试覆盖其他绘制方法,如paintChildren,paintComponents甚至paint方法本身,但这似乎也没有用。该面板的一个子项也覆盖了drawComponent方法,我怀疑它也有影响。
答案 0 :(得分:1)
答案 1 :(得分:0)
您需要在玻璃窗格中进行绘画。请参阅Java教程 http://docs.oracle.com/javase/tutorial/uiswing/components/rootpane.html 源代码在 http://docs.oracle.com/javase/tutorial/uiswing/examples/components/GlassPaneDemoProject/src/components/GlassPaneDemo.java 如果修改该源代码,则mouseMoved方法调用redispatchMouseEvent(e,true);红点就像一个光标。
不幸的是,我发现这在运行Java 1.6的Mac上不起作用,但它适用于运行Java 1.8和Windows的Mac。