2010-11-30 7 views
3

私はJavaでアプリを書くためにJOGL2とNativeWindow APIを使用しています。マウスカーソルを非表示にする最も簡単な方法は何ですか?JOGL2を使ってマウスカーソルを隠すには?

[編集] 私はJFrameを使ってウィンドウを作成するのではなく、JOGLからGLWindowを作成します。 GLWindowにはsetCursorメソッドがありません。これはまだ可能ですか?

答えて

4

ます(thekidderは)私は(AlexRが書いたように)このようなFrame(またはJFrame)内GLCanvasを使用するようGLWindowはその機能はありません言うように:さらにいくつかのそれはと思わ検索した後

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); 
} 
+0

私は私の質問を編集しました - これが可能ですJFrameを使わずに? – thekidder

+0

@thekidder:新しく編集された答えを見てください! – dacwe

+0

うん、それは私の疑惑だった。ありがとう! – thekidder

1

マウスがアプリケーションウィンドウの領域にある場合、任意の画像をカスタムカーソルとして設定できます。透明な画像1x1ピクセルを使用してください。私はそれを使用しました - うまく動作します。通常のAPI、JOGL、ネイティブコードはありません。

2

これは、以来、NEWT(GLWindowオブジェクト)を使用してJOGL2で実装されています。 https://jogamp.org/bugzilla/show_bug.cgi?id=409(キダーの答えで参照)を参照してください。

glWindow.setPointerVisible(false); 
0

現時点ではイモリ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)