Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [platform-swt-dev] Spinner with decimal values


This is a known bug.

https://bugs.eclipse.org/bugs/show_bug.cgi?id=139871

There are patches in the defect that you may want to try.

Duong



"T.J. VanSlyke" <tvanslyke@xxxxxxxxxxxxxxxxx>
Sent by: platform-swt-dev-bounces@xxxxxxxxxxx

10/02/2007 02:29 PM

Please respond to
"Eclipse Platform SWT component developers list."        <platform-swt-dev@xxxxxxxxxxx>

To
platform-swt-dev@xxxxxxxxxxx
cc
Buddha Buck <bbuck@xxxxxxxxxxxxxxxxx>, Shannon Mackey <smackey@xxxxxxxxxxxxxxxxx>, Jim Paquette <jpaquette@xxxxxxxxxxxxxxxxx>
Subject
[platform-swt-dev] Spinner with decimal values





Hi there,

I am writing in reference to
http://dev.eclipse.org/newslists/news.eclipse.platform.swt/msg27236.html.  
The author of that post (dated 2006) was having troubles with input into
the Spinner control not being handled properly.  I am experiencing the
same behavior.  Here is a snippet I found online which actually exhibits
the behavior quite nicely:

package great.ui;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;

/*
* Floating point values in Spinner
*
* For a list of all SWT example snippets see
*
http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets
*/

public class SpinnerExample {

   public static void main(String[] args) {
       Display display = new Display();
       Shell shell = new Shell(display);
       shell.setText("Spinner with float values");
       shell.setLayout(new GridLayout());
       final Spinner spinner = new Spinner(shell, SWT.NONE);
       // allow 3 decimal places
       spinner.setDigits(3);
       // set the minimum value to 0.001
       spinner.setMinimum(1);
       // set the maximum value to 20
       spinner.setMaximum(20000);
       // set the increment value to 0.010
       spinner.setIncrement(10);
       // set the seletion to 3.456
       spinner.setSelection(3456);
       spinner.addSelectionListener(new SelectionAdapter() {
           public void widgetSelected(SelectionEvent e) {
               int selection = spinner.getSelection();
               int digits = spinner.getDigits();
               System.out.println("Selection is "
                       + (selection / Math.pow(10, digits)));
           }
       });
       shell.setSize(200, 200);
       shell.open();
       while (!shell.isDisposed()) {
           if (!display.readAndDispatch()) {
               display.sleep();
           }
       }
       display.dispose();
   }
}

If you enter "42.", "42.0", or "42.00", the value of
spinner.getSelection() resolves correctly to 42000.  However, if you
enter "42" (without the decimal point), the value resolves to 42, which,
after the digit multiplier is applied, becomes 0.0042.  Has any progress
been made with regard to this issue since the last post in 2006?  Any
assistance is greatly appreciated!

Regards,
T.J. VanSlyke

_______________________________________________
platform-swt-dev mailing list
platform-swt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/platform-swt-dev


Back to the top