我正在使用JOGL2和NativeWindow API来编写Java应用程序。隐藏鼠标光标的最佳/最简单方法是什么?
[编辑] 我没有使用JFrame创建窗口,而是使用JOGL的GLWindow。 GLWindow没有setCursor方法。这还有可能吗?
答案 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)