6 votes

Java SWT Slider.getMaximum() est égal à 100, mais vous ne pouvez le faire glisser que jusqu'à 90.

Si vous créez un Slider (org.eclipse.swt.widgets.Slider) puis appeler getMaximum() sur celui-ci, la valeur est de 100. Mais lorsque vous essayez réellement de faire glisser le curseur jusqu'à sa valeur maximale, il n'atteint que 90.

Je peux contourner ce problème :

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

Mais quelque chose semble vraiment ne pas aller, non ?

5voto

sambi reddy Points 2907

Comme vous le savez Slider n'est rien d'autre que ScrollBar la valeur maximale que vous avez définie est égale à valeur_maximum+valeur_du_pouce valeur.

Essayez ce code :

  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

    }
  });

1voto

Baz Points 17236

Je peux également observer ce comportement sur Windows 7 avec SWT 3.6.1 et SWT 4.2.1.

Une solution de contournement simple mais quelque peu insatisfaisante serait d'utiliser :

sl.setMaximum(110);

Ensuite, les valeurs vont de 0 a 100 .

1voto

Simon Points 1481

Bien que les réponses fournies aient permis de résoudre le problème, il m'a fallu un certain temps pour le mettre en œuvre correctement. Si vous voulez que les valeurs 0-100 sélectionnable avec votre curseur, vous devriez le faire :

// 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();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X