我正在尝试创建一个可以移动以下范围的jslider。
[-x,-1)[1,x]
简而言之,我不希望值-1和0成为JSlider的有效值。 但是应该允许从x到-1的值,并且应该允许1到x。
我正在尝试不编写hacky代码,所以我不想在UI代码中编写一个只从不同(连续)范围获取值的函数,然后将其转换为我想要的范围一堆声明。
理想情况下,我应该只能调用slider.getValue()
并知道返回值将在我上面描述的范围内。
答案 0 :(得分:2)
我认为您必须自己在重写方法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");
}
}
答案 1 :(得分:2)
滑块的值只是拇指当前位置和滑块宽度之间的比率(以像素为单位)。 IIUC,您有三个范围[-x,-1)
,[-1,1)
和[1,x]
,因此您需要两个拇指。您可以查看支持JXMultiThumbSlider
的MultiThumbModel
。
附录:对于相关的用例,我从How to Write a Custom Swing Component开始。这很费劲,但可能会产生更清晰的结果。