Java MouseEvents not working

This may be a stupid question, but I have to ask!

I have the following code snippets that should run the appropriate methods when the user interacts with objects. For some reason, "foo" is never printed, but "bar".

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 have no exceptions or stack trace. What am I missing in MouseListener? Thanks in advance.

EDIT: MouseEntered works great on JCheckBox, implemented exactly the same!

+3
source share
4 answers

JSpinneris a composite component consisting of a text field and two buttons. You can add mouse listeners to all topics by repeating the results getComponents()and adding a listener to each.

, , - , , , .

JSpinner?
?

Update: , , .

Glasspane - .

+3

, , MouseListener JSpinner ( getEditor()). , Component JSpinner MouseEvent s.

+2

.

JSpinner spinner = new JSpinner();

((JSpinner.DefaultEditor)spinner.getEditor()).getTextField().addMouseListener(
    new java.awt.event.MouseAdapter() {            
    public void mouseClicked(final MouseEvent e) {   
        // add code here
    }
});

I needed this to bring up a popup dialog for ease of use due to our software requirements.

+2
source

Aditional for @Rapier's answer ...

If you change Spinner using something like

yourOldSpinner = new JSpinner(new SpinnerModel(...))

you lose your previous MouseListener ...

If you need to change something SpinnerModel, do not create a new one, change its parameters instead! (if you do, you will have to reassign MouseListener again, because it will be lost when you assign a new SpinnerModel).

example (I say ...):

((SpinnerNumberModel)yourOldSpinner.getModel()).setValue(size/3);
((SpinnerNumberModel)yourOldSpinner.getModel()).setMinimum(0);
((SpinnerNumberModel)yourOldSpinner.getModel()).setMaximum(isize/2);
((SpinnerNumberModel)yourOldSpinner.getModel()).setStepSize(1);
0
source

All Articles