当前位置: 首页 > 面试题库 >

JSlider问题:左击后的位置

屠嘉勋
2023-03-14
问题内容

每当我单击JSlider时,它就会在单击的方向上定位一个majorTick,而不是跳到我实际单击的位置。(如果滑块位于点47处,然后单击5,它将跳至37,而不是5)。使用JSliders时有什么方法可以更改此设置,还是必须使用其他数据结构?


问题答案:

尽管看起来很奇怪,但实际上是由外观来控制这种行为。看一下BasicSliderUI,您需要重写的方法是scrollDueToClickInTrack(int)

为了的值设置JSlider为最接近的值到点击轨道上的用户,你需要做的鼠标坐标之间的一些花哨的裤子从翻译getMousePosition()到有效的跟踪值,同时考虑到的位置Component,它的方向,大小和刻度之间的距离
。幸运的是,BasicSliderUI给了我们两个很方便的功能来做到这一点:valueForXPosition(int xPos)valueForYPosition(int yPos)

JSlider slider = new JSlider(JSlider.HORIZONTAL);
slider.setUI(new MetalSliderUI() {
    protected void scrollDueToClickInTrack(int direction) {
        // this is the default behaviour, let's comment that out
        //scrollByBlock(direction);

        int value = slider.getValue();

        if (slider.getOrientation() == JSlider.HORIZONTAL) {
            value = this.valueForXPosition(slider.getMousePosition().x);
        } else if (slider.getOrientation() == JSlider.VERTICAL) {
            value = this.valueForYPosition(slider.getMousePosition().y);
        }
        slider.setValue(value);
    }
});


 类似资料:
  • 问题内容: 我有N个JSliders列表(N不会在程序上更改,只是随着我添加更多功能而已。当前N等于4)。所有滑块的值之和必须等于100。随着一个滑块的移动,其余的滑块应进行调整。每个滑块的值范围从0到100。 当前,当更改滑块(伪代码)时,我正在使用以下逻辑: 此设置的问题是滑块的值存储为整数。因此,当我调整滑块时,会遇到精度问题:滑块会根据比例值抽动或完全不移动。同样,总价值不一定总等于100

  • 介绍 (Introduction) 类JSlider是一个组件,它允许用户通过在有界区间内滑动旋钮以图形方式选择值。 Class 声明 (Class Declaration) 以下是javax.swing.JSlider类的声明 - public class JSlider extends JComponent implements SwingConstants, Accessi

  • 问题内容: 我的查询有问题,该查询显示商店列表以及与之关联的产品数量。我已经玩了很长时间的左联接等,但无济于事。这些表具有以下结构: 商店含有表列:, 产品含表列:,,, 查询如下: 我没有去买有0件商品的商店。请问我该如何实现? 基础数据库是MySQL。 谢谢!马耳他 问题答案: 您需要在左侧购物,因为右侧可能没有数据,在本例中为PRODUCT。 不仅如此,您还需要WHERE条件作为LEFT-J

  • 本文向大家介绍selenium处理元素定位点击无效问题,包括了selenium处理元素定位点击无效问题的使用技巧和注意事项,需要的朋友参考一下 在WEB自动化测试过程中,经常会遇到这样的问题: 元素定位到了,但是点击无效?有人可能会问了,怎么判断元素定位到了,这个问题很好判断 1.给元素加高亮显示 arguments[0] 这个参数,可以理解为python中的字符串格式化。比如"{}{}".for

  • all内包含left,right,其中因为left内容多,所以all整体是有上下滚动的滚动条的,怎么使right一直固定显示。

  • 我必须编写一个函数,对y位置的位进行左循环移位。例如,如果我将:01011000和2作为y,则函数必须返回011000001。 我已经尝试使用但它似乎是无用的。