如果我运行以下Java spinner示例,其起始值为
double v = 3.146;
微调器上的向上/向下箭头按预期工作。但是,如果我使用
的起始值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();
}
});
}
}
答案 0 :(得分:3)
为微调器设置自定义编辑器以显示4位小数:
JSpinner.NumberEditor numberEditor = new JSpinner.NumberEditor(s,"0.0000");
s.setEditor(numberEditor);