如何使用JOGL2隐藏鼠标光标?

时间:2010-11-30 19:47:33

标签: java mouse cursor jogl

我正在使用JOGL2和NativeWindow API来编写Java应用程序。隐藏鼠标光标的最佳/最简单方法是什么?

[编辑] 我没有使用JFrame创建窗口,而是使用JOGL的GLWindow。 GLWindow没有setCursor方法。这还有可能吗?

5 个答案:

答案 0 :(得分:4)

正如你(thekidder)所说GLWindow没有这种能力所以我会在GLCanvas(或Frame)中使用JFrame,就像这样(就像AlexR写的那样) :

public static void main(String... args) {

    // create the cursor
    Toolkit t = Toolkit.getDefaultToolkit();
    Image i = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
    Cursor noCursor = t.createCustomCursor(i, new Point(0, 0), "none"); 

    // try it with a normal frame
    Frame f = new Frame();

    // create the GLCanvas and add it to the frame
    GLCanvas canvas = new GLCanvas();
    frame.add(canvas);

    f.setCursor(noCursor);
    f.setSize(400, 200);
    f.setVisible(true);
}

答案 1 :(得分:2)

这已经在JOGL2中使用NEWT(一个GLWindow对象)实现。请参阅https://jogamp.org/bugzilla/show_bug.cgi?id=409(在thekidder的答案中引用)。

你可以这样做:

glWindow.setPointerVisible(false);

答案 2 :(得分:1)

如果鼠标位于应用程序窗口区域,则可以将任何图像设置为自定义光标。使用透明图像1x1像素。我用它 - 工作正常。它是常规API,没有JOGL,没有本机代码。

答案 3 :(得分:0)

经过一些进一步搜索后,似乎尚未对JOGL2中的NEWT窗口实现此功能。在JOGL的bugzilla上提交了一个增强请求:http://jogamp.org/bugzilla/show_bug.cgi?id=409

答案 4 :(得分:0)

目前正在使用NEWT GLWindow:

window = GLWindow.create(caps);

...

window.requestFocus();
window.setAlwaysOnTop(true); // i think, be on top is good than mouse is jailed
window.setUndecorated(true); // remove window borders (if u want)
window.setPointerVisible(false); // hide cursor
window.confinePointer(true); // jail inside (cursor will be limited to window borders)