2013-05-15 35 views
0

我想在我的JSpinner为空时取空值。但是当我调用getValue()函数时,它返回0.0JSpinner获取空值

public JFormattedTextField getTextField(JSpinner spinner) { 
    JComponent editor = spinner.getEditor(); 
    if (editor instanceof JSpinner.DefaultEditor) { 
     return ((JSpinner.DefaultEditor)editor).getTextField(); 
    } else { 
     return null; 
    } 
} 

这是我的方法调用:

Object a = getTextField(jValueNum).getValue(); 

编辑:或者是有什么办法可以过载 的getValue()函数?

回答

1

但是,当我调用getValue()函数时,它返回0.0。

相当不可能没有肮脏的黑客为JFormattedTextField上与数字格式化,有来自Number实例的任何数字

我要带空值,当我的JSpinner是空的默认值

返回null(错误的想法,因为数字应该用于计算)在JSpinner返回double的情况下.valueOf(0.0)

Object a = getTextField(jValueNum).getValue();

的JSpinner可以做到这一点,也没有理由使用衍生编辑器返回

2

@ user2279774:JSpinner的设置与用户定义的值。这将是唯一的方式我知道..例如:

String[] colors = new String[] { 
       "Red", "Orange", "Yellow", "Green", "Blue"," ", "Purple" 
     }; 
     SpinnerListModel model = new SpinnerListModel(colors); 
0

检查你设置了什么微调模型。可能你已经设置了SpinnerNumberModel。使用SpinnerDataModel尝试并以字符串格式设置所有值。

它将返回为对象配置的编辑器(JFormattedTextField),您将获得值为null。 :)

+0

我需要一个SpinnerNumberModel。用户应该输入一个数字。但是,对于没有值的变量,用户应该可以将它留为空值。 – user2279774

+0

[see hack](http://stackoverflow.com/a/9366053/714968)适用于JFormattedTextField,将此代码应用于JSpinnrs编辑器组件 – mKorbel

+0

不是问题...,将Documentlistener或InputVerifier与编辑器一起使用,并仅接受数字数据来自用户,但在内部保留为微调模型中的字符串。 :) –