[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[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