Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Mouse pointer moves to centre of canvas on click in OpenGL3 with Swing

Open
#2,327 5 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Bug
Clarity
Needs clarification
Activity status
Stale
Tech stack
java
Domain
desktop

Research direction

Start by reproducing the issue with JME 3.7.0-stable, an OpenGL3 canvas embedded in Swing, and an InputManager.addListener(ActionListener) handler. Compare InputManager.getCursorPosition() during mouseDown and mouseUp, then investigate the OpenGL3 Swing canvas input path against the OpenGL2 behavior. Done means the cursor remains at its physical position and both events report the expected coordinates without the Robot workaround.

Written by the indexing model from the issue text.

Description

With JME3.7 we can now embed OpenGL3 canvas in a Swing window. I have noticed an issue with the mouse with this configuration.

Steps to reproduce:

  1. Use JME 3.7.0-stable
  2. Be running OpenGL3
  3. Have a jme canvas embedded in a swing window
  4. Listen for jme mouse events using InputManager.addListener(ActionListener)
  5. Left click on the canvas
  6. In the ActionListener, get the position of the mouse using InputManager.getCursorPosition()

Observed
The mouseDown (i.e. keyPressed=true) will have the correct mouse position.
By the time the mouseUp event is processed (i.e. keyPressed=false), the position of the mouse has been moved to the centre of the canvas.

  • The mouse is physically displayed in the centre of the canvas
  • InputManager.getCursorPosition() will return a mouse position in the centre of the canvas

Notes:

  • This does not happen if you are not using Swing
  • This does not happen in OpenGL2 with Swing
  • Seen on both Windows 10 and current Debian linux stable (12.7)

A workaround (more a hack) is to

  • Store the location of the mousedown event
  • In the mouseup event, use java.awt.Robot to move the mouse back to where the mousedown event happened.
Dominant language
Java
Stars
4.3k
Forks
1.2k
Avg merge
2d 10h
Merged PRs (30d)
23

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from jMonkeyEngine/jmonkeyengine

All issues in jMonkeyEngine/jmonkeyengine

Similar issues

More Java issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.