2010-11-10 60 views
1

我有兩個jbuttons(在jslider上左右)和一個jslider。如何在jbutton上按下鼠標移動jslider?

在按下鼠標左鍵Jbutton時,jslider需要向左移動。

在按下鼠標右鍵Jbutton時,jslider需要向右移動。

請幫我解決這個問題。

感謝 喬蒂

回答

2

here,所有你需要做的是使用setValue(int)

無效的setValue(int)的

設置或獲取滑塊的當前值。設定的方法也定位滑塊的旋鈕。

我假設你的意思是移動實際指針而不是整個組件本身。如果你想移動整個JSlider,你應該使用.setLocation(int x, int y)方法。

編輯:這取決於你需要做什麼。如果要以編程方式移動滑塊,則可能需要放置Thread.sleep(超時),以便線程暫停一段時間,以便您看到滑塊移動。另一方面,每次按下按鈕時,您可以讓滑塊移動一次,例如,每次按下「左」按鈕時,滑塊的值將減少10.右側的按鈕會發生相反的情況。後者似乎是使用最廣泛(至少據我所知)的方法。

+0

感謝您的回覆。我在Jbutton的鼠標按下事件中使用了JSlider的setValue()方法。我使用while循環來減少或增加值。隨着jslider的移動,JSlider正在以非常快的速度移動。你能給我一些建議嗎? – Jyoti 2010-11-10 07:50:04

+0

我編輯了我的回覆。 – npinti 2010-11-10 08:36:24

2

JSlider#setValue用於將滑塊位置設置爲值。該值應該在(包括)JSlider#getMinimumJSlider#getMaximum之間的範圍內,滑塊將負責將值轉換爲「像素位置」。


編輯 - 你可以引入延遲Thread#sleep。你只需要「等待」幾毫秒,你送下「的setValue」消息之前JSlider的:

所以當按下按鈕,你是在一個循環:

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

如果按鈕被釋放,您將isPressed標誌設置爲false,並且上面的循環結束。

+0

感謝您的回覆。我在Jbutton的鼠標按下事件中使用了JSlider的setValue()方法。我使用while循環來減少或增加值。隨着jslider的移動,JSlider正在以非常快的速度移動。你能給我一些建議嗎? – Jyoti 2010-11-10 07:48:46

0

或者,您可以查看SpinSlider,它結合了JSliderJSpinner。它還可以很好地與鍵盤配合使用,並可在大多數平臺上調整爲用戶首選的鍵盤重複頻率。

相關問題