我有兩個jbuttons(在jslider上左右)和一個jslider。如何在jbutton上按下鼠標移動jslider?
在按下鼠標左鍵Jbutton時,jslider需要向左移動。
在按下鼠標右鍵Jbutton時,jslider需要向右移動。
請幫我解決這個問題。
感謝 喬蒂
我有兩個jbuttons(在jslider上左右)和一個jslider。如何在jbutton上按下鼠標移動jslider?
在按下鼠標左鍵Jbutton時,jslider需要向左移動。
在按下鼠標右鍵Jbutton時,jslider需要向右移動。
請幫我解決這個問題。
感謝 喬蒂
據here,所有你需要做的是使用setValue(int)
無效的setValue(int)的
設置或獲取滑塊的當前值。設定的方法也定位滑塊的旋鈕。
我假設你的意思是移動實際指針而不是整個組件本身。如果你想移動整個JSlider,你應該使用.setLocation(int x, int y)
方法。
編輯:這取決於你需要做什麼。如果要以編程方式移動滑塊,則可能需要放置Thread.sleep(超時),以便線程暫停一段時間,以便您看到滑塊移動。另一方面,每次按下按鈕時,您可以讓滑塊移動一次,例如,每次按下「左」按鈕時,滑塊的值將減少10.右側的按鈕會發生相反的情況。後者似乎是使用最廣泛(至少據我所知)的方法。
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
,並且上面的循環結束。
感謝您的回覆。我在Jbutton的鼠標按下事件中使用了JSlider的setValue()方法。我使用while循環來減少或增加值。隨着jslider的移動,JSlider正在以非常快的速度移動。你能給我一些建議嗎? – Jyoti 2010-11-10 07:48:46
或者,您可以查看SpinSlider
,它結合了JSlider
和JSpinner
。它還可以很好地與鍵盤配合使用,並可在大多數平臺上調整爲用戶首選的鍵盤重複頻率。
感謝您的回覆。我在Jbutton的鼠標按下事件中使用了JSlider的setValue()方法。我使用while循環來減少或增加值。隨着jslider的移動,JSlider正在以非常快的速度移動。你能給我一些建議嗎? – Jyoti 2010-11-10 07:50:04
我編輯了我的回覆。 – npinti 2010-11-10 08:36:24