0

我正在寻找为 Java 中的绘图应用程序创建自定义鼠标光标。该应用程序需要能够在 Windows 上运行,并且由于 Windows 中与光标大小(32 * 32 像素)相关的限制,无法使用内置光标功能。

我尝试使用 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 甚至绘画方法本身,但这似乎也不起作用。面板的其中一个子面板还覆盖了一个 drawComponent 方法,我怀疑这也有影响。

4

2 回答 2

1

需要考虑的几个选项:

  1. 如何使用分层窗格
  2. 如何使用 JLayer 类装饰组件
于 2014-10-27T01:40:55.313 回答
0

你需要在玻璃板上作画。请参阅http://docs.oracle.com/javase/tutorial/uiswing/components/rootpane.html上的 Java 教程, 源代码位于 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 的 Mac 和 Windows。

于 2016-01-09T01:51:44.370 回答