2

我正在尝试创建一个在以下范围内移动的 jslider。

[-x,-1)[1,x]

简而言之,我不希望值 -1 和 0 成为 JSlider 的有效值。但是应该允许从 x 到 -1 的值,并且应该允许从 1 到 x。

我试图不编写骇人听闻的代码,所以我不想在 UI 代码中编写一个函数,该函数只是从不同(连续)范围内获取值,然后用一堆将其转换为我想要的范围它声明。

理想情况下,我应该能够调用slider.getValue()并知道返回值将在我上面描述的范围内。

4

2 回答 2

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");
        }
    }
于 2011-05-28T10:22:58.880 回答
2

滑块的值只是拇指当前位置与滑块宽度之间的比率,以像素为单位。IIUC,你有三个范围,[-x,-1)[-1,1)[1,x]所以你需要两个拇指。您可能会查看JXMultiThumbSlider,它支持MultiThumbModel.

附录:对于一个相关的用例,我从如何编写自定义 Swing 组件开始。这很费力,但它可能会产生更清洁的结果。

于 2011-05-28T19:36:49.157 回答