This may be a stupid question, but I have to ask!
I have the following code snippets that are supposed to run their corresponding methods when the user interacts with objects. For some reason, "foo" is never printed, but "bar" is.
myJSpinner1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseEntered(java.awt.event.MouseEvent evt) {
System.out.println("foo"); //"foo" is not printed
}
});
myJSpinner2.addChangeListener(new java.awt.event.ChangeListener() {
public void stateChanged(java.awt.event.ChangeEvent evt) {
System.out.println("bar"); //"bar" is printed
}
});
I get no exceptions or stack trace. What am I missing in the MouseListener one? Thanks in advance.
EDIT: MouseEntered works perfectly on a JCheckBox implemented in exactly the same way!
This worked for me.
I needed this in order to evoke a popup key dialog for added usability due to our software requirements.
This is a guess but I suspect you need to add a
MouseListener
to theJSpinner
's editor (via a call togetEditor()
). I imagine that the editorComponent
occupies all available space within theJSpinner
and is therefore intercepting allMouseEvent
s.JSpinner
is a composite component consisting of a text field and 2 buttons. It's possible to add mouse listeners to all of those by iterating over the results ofgetComponents()
and adding a listener to each.However, in my experience, when something takes that much work, you're probably going about it the wrong way.
Why do you need the mouse-entered information for a
JSpinner
?What do you want to do with this event?
Update: If you're looking to supply information about all of the controls in your panel, you may want to look at using a glasspane to detect the component under the mouse.
A Well-behaved Glasspane by Alexander Potochkin is a good place to start.
Aditional to @Rapier answer...
If you change the Spinner using something like
you will lost your previosly MouseListener...
If you need to change something of
SpinnerModel
, Don't create a new, change its parameters instead! (if you do it, you will need to reassign the MouseListener again, because it will be lost when you assign a new SpinnerModel).an example (I'm talking...):