I was trying to add a mouseListener and a mouseMotionListener to my game and noticed that I can add them to the Canvas or to the JFrame. Do I add it to both or one of them?
Do I add MouseListeners to the Canvas or to JFrame
113 views Asked by AudioBubble At
2
There are 2 answers
0
AudioBubble
On
Attach it to the Canvas
You should add the mouse listener to the canvas, there is one reason for it: Coordinates.
If you attach mouse listener to the frame the 0-point of coordinates will be on the left-up corner of JFrame border. It will be hard to calculate the coordinates relative to canvas.
Instead of you can attach mouse listener to Canvas. The coordinates will be better with this. But do not forget to gain focus on canvas after adding listener:
canvas.addMouseMotionListener(motionListener);
canvas.requestFocus();
Related Questions in JAVA
- I need the BIRT.war that is compatible with Java 17 and Tomcat 10
- Creating global Class holder
- No method found for class java.lang.String in Kafka
- Issue edit a jtable with a pictures
- getting error when trying to launch kotlin jar file that use supabase "java.lang.NoClassDefFoundError"
- Does the && (logical AND) operator have a higher precedence than || (logical OR) operator in Java?
- Mixed color rendering in a JTable
- HTTPS configuration in Spring Boot, server returning timeout
- How to use Layout to create textfields which dont increase in size?
- Function for making the code wait in javafx
- How to create beans of the same class for multiple template parameters in Spring
- How could you print a specific String from an array with the values of an array from a double array on the same line, using iteration to print all?
- org.telegram.telegrambots.meta.exceptions.TelegramApiException: Bot token and username can't be empty
- Accessing Secret Variables in Classic Pipelines through Java app in Azure DevOps
- Postgres && statement Error in Mybatis Mapper?
Related Questions in CANVAS
- Random number generator in Python Canvas
- When I use electron js and canvas in node js, I get a rebuild module error
- How to set an individual mouse scroll on two different canvases that are connected to separate frames but the frames are one on top of eachother?
- Positioning for sliders and canvas
- How to perfectly align textarea and canvas fillText
- Rust Ownership Challenges in Drawing Application: Need Assistance with Code Section
- Zoom In/Out particular Object with Touch in Fabric JS
- How to send a big array to a client faster
- Android: How to scale a bitmap to fit the screen size using canvas?
- How can i resize canva and send resized data to database?
- Given a convex polygon as a set of edges how to fill the area inside depending on the distance to the closest edge
- SigmaJS: Create a snapshot of "sigma-containter"
- Draw local image on canvas using react-native-canvas
- Rotating multiple objects around the origin (JavaScript Canvas)
- How to proper rotate object with a 45-degree angle using OrbitControls?
Related Questions in JFRAME
- Frame showing up super small Java Swing
- JComponent added to JPanel doesn't appear?
- Java paintComponent not display background image on JFrame
- How to add good quality image to JFrame?
- repaint() leaves trace of object initial position
- JFrame does not show anything before maximizing
- How to creating a transparent, borderless, full-screen JFrame overlay in Java swing
- How to Implement SRCAND with Java?
- Coding battleship in java using Jbuttons in a Jframe
- How do I colorize the text in a JFrame Title bar
- Java : How to display a label inside a Jframe component
- Problems with moving an object in Java Swing
- Get accurate coordinates within JPanel in a JFrame
- table is not visible in the window. How to fix it?
- Why does my ImageIcon disappear after using setLocation() on JFrame?
Related Questions in MOUSELISTENER
- Detect External/Physical Mouse Movements and Clicks android
- Difficulty capturing fast mouse movements in Java Swing paint app
- Javascript listener mousemove giving wrong position to custom cursor
- Get assigning var from mouse clicked
- How to add a javascript that attached mouse drag/move eventlistener to text created by svg and css
- Mouse recording and replay script does not work in video games
- AVC denied when trying to debug in kotlin & trigger left-click Mouse
- How to prevent mouse right-clicking on a JPopupMenu
- How to use only one MouseListener function without having to implement all methods?
- Pynput cannot detect mouse clicks while in game window
- Regarding mouse events
- Capture Mouse Button Events in Python/Raspberry Pi 4/Buster
- How to stop all listeners (keyboard and mouse) at the same time?
- JLabel not clicking into the right place when mouseReleased() is implemented
- How to wait for any keypress (global), or mouse click (on certain application windows) - Python
Related Questions in MOUSEMOTIONLISTENER
- Why the object don't track the mouse when drag the mouse quickly with mouseMoved?
- Mouse cursor detecting Java
- MouseMotionListener Is not doing what its supposed to?
- Mouse Goes behind part of the panel where it has been drawn on
- How to add a self-defined MouseMotionListener to a JPanel?
- How can I detect mouse position outside JTable?
- Java AWT: How best to prevent dragged Shape from overlapping another Shape
- Java Swing: Is there a way to check for MouseOver for a drawn shape without checking every time the mouse moves?
- keyPressed() method not working after mousePressed()
- How to show the coordinates of my mouse in a couple JTextField?
- How to rotate something upwards based on mouse position in Java
- How to create this mouse interaction using javascript?
- How to use MouseMotion ints in another method
- Dragging lines in Java
- Moving the mouse off screen (to the left) causes it to move down and to the right
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
What I recommend is using the Canvas. When you are using a listener of any kind, think of where the actions will occur. Do all of your updates happen on the frame or on the canvas? If it is the latter, use the canvas to handle all of your action listener objects.
Another way to think of it is that the JFrame is just a window holding the implementation of your game. Your graphic updates, keyboard inputs, mouse inputs, and any other functionality is done through the canvas.
For example, compare the JFrame and canvas to this image of Skyrim. The window on the outside (A JFrame Object) has a close/minimize feature and the window holds the game screen (A Canvas Object).