-1

How do you deactivate e.g. the mouseReleased event callback on a JSlider component?

Andrew Thompson
  • 168,117
  • 40
  • 217
  • 433
Stéphane Mottelet
  • 2,853
  • 1
  • 9
  • 26
  • 1
    1) For better help sooner, post a [MCVE] or [Short, Self Contained, Correct Example](http://www.sscce.org/). 2) **See [What is the XY problem?](http://meta.stackexchange.com/q/66377)** – Andrew Thompson Apr 04 '18 at 10:03

2 Answers2

2

You can override JSlider, with an enabled property. When adding a mouse listener, create a new mouse listener which delegates to the original, but only when the property is enabled:

import javax.swing.JSlider;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

class MyJSlider extends JSlider
{
    private boolean isEnabled = true;

    public void setEnabled(boolean isEnabled)
    {
        this.isEnabled = isEnabled;
    }

    @Override
    public synchronized void addMouseListener(final MouseListener delegate)
    {
        super.addMouseListener(
            new MouseListener() {
                @Override
                public void mouseClicked(final MouseEvent e) {
                    delegate.mouseClicked(e);
                }

                @Override
                public void mousePressed(final MouseEvent e) {
                    delegate.mousePressed(e);
                }

                @Override
                public void mouseReleased(final MouseEvent e) {
                    if (isEnabled) {
                        delegate.mouseReleased(e);
                    }
                }

                @Override
                public void mouseEntered(final MouseEvent e) {
                    delegate.mouseEntered(e);
                }

                @Override
                public void mouseExited(final MouseEvent e) {
                    delegate.mouseExited(e);
                }
            }
        );
    }
}
Michael
  • 41,989
  • 11
  • 82
  • 128
1

I usually just get the listener check against a local boolean flag in the class adding it before processing the rest of the listener which I turn on or off to determine if the listener should be processed.

William Jarvis
  • 347
  • 3
  • 6