我試圖創建一個jslider隨着下列範圍移動。自定義範圍使用JSlider
[-x,-1)[1,x]
總之,我不希望值-1和0是JSlider的有效值。 但是應該允許從x到-1的值,並且允許1到x。我試圖不寫hacky代碼,所以我不想在UI代碼中寫一個函數,它只是從不同的(連續的)範圍獲取值,然後將其轉換爲我想要的範圍與一堆它的聲明。
理想情況下,我應該能夠調用slider.getValue()
並知道返回值將在上述範圍內。
我試圖創建一個jslider隨着下列範圍移動。自定義範圍使用JSlider
[-x,-1)[1,x]
總之,我不希望值-1和0是JSlider的有效值。 但是應該允許從x到-1的值,並且允許1到x。我試圖不寫hacky代碼,所以我不想在UI代碼中寫一個函數,它只是從不同的(連續的)範圍獲取值,然後將其轉換爲我想要的範圍與一堆它的聲明。
理想情況下,我應該能夠調用slider.getValue()
並知道返回值將在上述範圍內。
我想你必須自己做這個數值調整,或許在重寫的方法setValue()
?
試試此代碼:
int x = 10;
@Override
public void setValue(int n)
{
if((n >= -x && n < -1)|| (n =< x && n >= 1))
{
super.setValue(n);
System.out.println("OI in setValue");
}
}
我在想像這樣的代碼真的屬於模型。你不是嗎? – 2011-05-28 13:26:41
@Varun Madiath你是對的。這會好得多。查看'BoundedRangeModel',然後可以將其設置爲滑塊。它有setValue方法,因此我相信你可以將代碼複製到你的模型中。 – Boro 2011-05-28 14:02:55
好的,我用你的代碼看到的問題是,如果用戶要將滑動條拖動到-1或0的值,那麼滑塊將會簡單地反彈回到它之前的位置。這會混淆用戶。 – 2011-05-28 17:35:40
甲滑塊的值僅僅是拇指的當前位置與滑塊寬度,在像素之間的比率。 IIUC,你有三個範圍,[-x,-1)
,[-1,1)
和[1,x]
,所以你需要兩個拇指。您可能會看到JXMultiThumbSlider
,它支持MultiThumbModel
。
附錄:對於相關用例,我從How to Write a Custom Swing Component開始。這很費勁,但它可能會產生更清晰的結果。
你是否與java.net「熟悉」,爲什麼有一切d * i * e * d +1 – mKorbel 2011-05-28 20:11:19
@mKorbel:非常好,但API可以作爲任何現存資源或示例的指南。 – trashgod 2011-05-28 20:21:13
大和最大的項目是無法訪問例如SwingX http://stackoverflow.com/questions/6154504/jxmultisplitpane-causes-repaint-during-slider-adjustment,這是恐怖吸吮swingx.jar ... – mKorbel 2011-05-28 20:25:18
添加了擺動標籤。所以更多有此經驗的人會看到它。 – Boro 2011-05-28 09:57:02
應該明確想過要添加該標籤。感謝您添加它。 – 2011-05-28 09:58:15
@Varun Madiath你到目前爲止做了什麼?你有一些代碼嗎? – Boro 2011-05-28 10:10:36