1

2 つの jbutton (jslider の左右) と 1 つの jslider があります。

左の Jbutton でマウスを押すと、jslider を左に移動する必要があります。

右の Jbutton でマウスを押すと、jslider を右に移動する必要があります。

どうすればこれを解決できるか教えてください。

ありがとうジョティ

4

3 に答える 3

2

ここによると、あなたがする必要があるのは使用することだけですsetValue(int)

void setValue(int)

スライダーの現在の値を設定または取得します。setメソッドは、スライダーのノブも配置します。

コンポーネント全体ではなく、実際のポインタを移動することを意味していると思います。JSlider全体を移動する場合は、この.setLocation(int x, int y)メソッドを使用する必要があります。

編集:それはあなたが何をする必要があるかによります。プログラムでスライダーを移動する場合は、Thread.sleep(timeout)を設定して、スレッドがしばらく一時停止し、スライダーの移動を確認できるようにすることができます。一方、ボタンを押すたびにスライダーを1回移動させることができます。たとえば、「左」ボタンを押すたびに、スライダーの値が10ずつ減少します。右ボタンの場合は逆になります。後者は(少なくとも私の知る限りでは)最も広く使用されているアプローチのようです。

于 2010-11-10T07:37:00.113 に答える
2

JSlider#setValueスライダーの位置を値に設定するために使用されます。JSlider#getMinimum値は (を含む) ~の間の範囲にある必要がJSlider#getMaximumあり、スライダーは値を「ピクセル位置」に変換します。


編集 - で遅延を導入できますThread#sleep。次の「setValue」メッセージを JSlider に送信する前に、数ミリ秒「待機」する必要があります。

ボタンが押されている間、あなたはループにいます:

while(isPressed) {
  adjustSliderByOneTick();
   try { 
     Thread.sleep(100);  // 100 milliseconds for a first test
   } catch (InterruptedException e) {
     break;
   }
}

ボタンが離されると、isPressedフラグが設定されfalse、上記のループが終了します。

于 2010-11-10T07:38:32.807 に答える
0

別の方法として、とSpinSliderを組み合わせた を見てみるとよいでしょう。また、キーボードとの相性もよく、ほとんどのプラットフォームでユーザーの好みのキーボード リピート レートに調整されます。JSliderJSpinner

于 2010-11-10T12:23:48.160 に答える