Search code examples
javafxjavafx-8

JavaFX Spinner change is slow with click and hold of mouse button


The speed of Spinner update is slow when I click and hold the up/down arrow buttons. Is there a way to increase the change speed?

When I click, click, click with the mouse, the spinner values change as fast as I click. It also changes fast if I use the up/down arrows on the keyboard for each key press or if I hold down the up/down arrow keys. I want the values to change that fast when I click and hold on the arrow buttons.

Anyone know a way to do that?


Solution

  • I modified the answer of fabian a little bit to decrease the speed of the spinner while holding mouse down:

    private int currentFrame = 0;
    private int previousFrame = 0;        
    
    @Override
    public void handle(long now)
    {
        if (now - startTimestamp >= initialDelay)
            {
            // Single or holded mouse click
            if (currentFrame == previousFrame || currentFrame % 10 == 0)
            {
                if (increment)
                {
                    spinner.increment();
                }
                else
                {
                    spinner.decrement();
                }
            }
        }
    
        ++currentFrame;
    }
    

    And after stopping the timer we adjust previousFrame again:

    public void stop()
    {
        previousFrame = currentFrame;
    
        [...]
    }