2
如果我的的JSpinner用的SpinnerNumberModel
double v = 3.146;
的微调工作向上/向下箭头的初始值运行下面的Java微调例子如预期时,使用4位数字的初始值被卡住。但是,如果我使用起始值
double v = 3.1466;
箭头按钮不再起作用。
据我所知,这与将显示值舍入到三位十进制数字有关,后者的结果为3.147,当然在微调器的范围之外。但是,我的原始值显然不超出指定的最大值。
有没有办法确保只要我的初始值在[min,max]范围内,微调按钮按预期工作?
public class spinner_test {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame f = new JFrame("Frame");
double v = 3.1466; // Makes the spinner buttons non functional
// double v = 3.146; // Work OK
SpinnerNumberModel m = new SpinnerNumberModel(v, 0, v, 0.005);
JSpinner s = new JSpinner(m);
f.add(s);
f.setVisible(true);
f.pack();
}
});
}
}
我不一定要显示四个小数。即使如此,同样的问题仍然存在,但是现在在具有五位小数的原始数据和具有四位小数的显示值之间。 – Kavka
“五位小数” - 你是指5位小数?你的问题是约4位小数。使用您的代码时,向下箭头即可运行,向上箭头将在您使用向下箭头后生效。 – camickr
对不起,如果我不清楚我的解释。基本上,我的意思是只要在原始值中指定的小数位数(例如5位数)与微调器中显示的小数位数(例如4位数)有差异,就有可能由于四舍五入,微调箭头按钮将停止工作。我正在寻找一种解决方案,它不需要知道原始值中使用了多少个数字。 – Kavka