2016-06-23 8 views
2

このコードは、スライダのつまみが0〜20と20〜50の間を通過するたびにメッセージを出力します(ノブが1,2,3,4そう)。私が必要とするのは、ノブがこれらの範囲内にあるときに1回だけ印刷することです。Jsliderを一度だけ印刷する

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"); 
     } 
    } 

答えて

0

あなたの場合のように、スライダーが下限すなわち入るとすぐに

を意味している時間間隔で指定されました[sliderValue> = 0]または[sliderValue> 20]の条件が満たされ、上限値を終了するまで続けます。すなわち、 [sliderValue < = 20]または[sliderValue < = 50]です。

まず、制限を設定することです。上限を排他的に設定することができます。

解決策の1つは、成功の目標として範囲の中央値を作ることです。

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"); 
    } 
} 
0

どのようにこのことについて...あなたは「RANGE」を持っている

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; 
    } 
} 
+0

@Cohen、正しい答えとして私の答えを取ってもらえますか?ありがとう –

関連する問題