打印一次 Jslider

Printing a single time Jslider

这段代码的作用是每次滑块的旋钮在 0-20 和 20-50 之间时打印一条消息(当旋钮位于 1、2、3、4 等位置时打印一条消息) .我需要的是当旋钮在这些范围之间时只打印一次。

public void stateChanged(ChangeEvent e)
    {
        int sliderValue = jslider.getValue();  //This method returns the value of the Slider!
        if(sliderValue >= 0 && sliderValue <= 20)
        {
            System.out.println("Between 0 and 20");
        }
        else if (sliderValue > 20 && sliderValue <= 50)
        {
            System.out.println("You're 20 - 50");
        }
    }

这个怎么样...

private boolean range0Printed = false;
private boolean range1Printed = false;

public void stateChanged(ChangeEvent e)
{
    int sliderValue = jslider.getValue();  //This method returns the value of the Slider!
    if(sliderValue >= 0 && sliderValue <= 20 && !range0Printed)
    {
        System.out.println("Between 0 and 20");
        range0Printed = true;
    }
    else if (sliderValue > 20 && sliderValue <= 50 && !range1Printed)
    {
        System.out.println("You're 20 - 50");
        range1Printed = true;
    }
}

在你的情况下,你有一个为时间间隔指定的“RANGE”,这意味着

一旦滑块进入下限,即 [sliderValue >= 0] 或 [sliderValue > 20],您的条件就会满足并保持为真,直到它退出上限,即 [滑块值 <= 20] 或 [滑块值 <= 50].

思路是先设置上限,可以设置上限独享。

其中一个解决方案可能是将范围的中位数作为成功的目标。

public void stateChanged(ChangeEvent e) {
    int sliderValue = jslider.getValue();
    int lowerMedian=(0+20)/2;
    int upperMedian=(0+50)/2;
    if (sliderValue >= 0 && sliderValue <= 20 && sliderValue == lowerMedian) {
        System.out.println("Between 0 and 20");
    } else if (sliderValue > 20 && sliderValue <= 50 && sliderValue == upperMedian) {
        System.out.println("You're 20 - 50");
    }
}