我正在尝试创建一个在以下范围内移动的 jslider。
[-x,-1)[1,x]
简而言之,我不希望值 -1 和 0 成为 JSlider 的有效值。但是应该允许从 x 到 -1 的值,并且应该允许从 1 到 x。
我试图不编写骇人听闻的代码,所以我不想在 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");
}
}
滑块的值只是拇指当前位置与滑块宽度之间的比率,以像素为单位。IIUC,你有三个范围,[-x,-1)
和[-1,1)
,[1,x]
所以你需要两个拇指。您可能会查看JXMultiThumbSlider
,它支持MultiThumbModel
.
附录:对于一个相关的用例,我从如何编写自定义 Swing 组件开始。这很费力,但它可能会产生更清洁的结果。