6

如果你创建一个Slider(org.eclipse.swt.widgets.Slider)然后调用getMaximum()它,值是100。但是当你实际尝试将Slider拖到它的最大值时,它只达到90。

我可以解决这个问题:

sl.setSelection(sl.getMaximum());   // sl.getMaximum() is 100   
int actualMax = sl.getSelection();  // should be 100, but is actually 90

但肯定有什么问题,不是吗?

4

3 回答 3

5

如您所知Slider,只是ScrollBar小部件,您设置的最大值等于 max_value+thumb_value值。

试试这个代码:

  final Slider slider = new Slider(shell, SWT.NONE);
  slider.setMaximum(100);
  slider.setMinimum(0);
  slider.setThumb(20);

  slider.addSelectionListener(new SelectionListener() {

    @Override
    public void widgetSelected(SelectionEvent e) {
        System.out.println( slider.getSelection()  +"   "+ slider.getThumb());
    }

    @Override
    public void widgetDefaultSelected(SelectionEvent e) {

      // TODO Auto-generated method stub

    }
  });
于 2012-12-17T20:26:54.163 回答
1

我还可以在带有 SWT 3.6.1 和 SWT 4.2.1 的 Windows 7 上观察到这种行为。

一个简单但不满意的解决方法是使用:

sl.setMaximum(110);

然后值范围从 0100

于 2012-12-17T10:04:58.610 回答
1

尽管提供的答案有助于解决问题,但我仍然需要一段时间才能正确实施。如果您想0-100使用滑块选择值,您应该这样做:

// we want to have the values 0-100
slider.setMaximum(100 + slider.getThumb());
// this now returns the selected value, which can be from 0-100
slider.getSelection();
于 2014-06-27T21:14:36.067 回答