Java SWT微调器的getText()和getSelection()之间有什么区别?

Java SWT微调器的getText()和getSelection()之间有什么区别?,java,swt,spinner,Java,Swt,Spinner,对于SWT中的微调器控件,getText()和getSelection()之间有什么区别?我唯一能看出来的是返回类型。但是,我不能输入任何文本,只允许输入数字 getText(): 返回包含接收者文本字段内容副本的字符串,如果没有内容,则返回空字符串 getSelection(): 返回所选内容,即接收器的位置 那么,为什么我们有两个不同的getter,我应该使用哪一个呢?既然微调器表示一个数值选择,那么您应该使用getSelection(),因为它会准确返回所选内容 我不知道为什么getTex

对于SWT中的
微调器
控件,
getText()
getSelection()
之间有什么区别?我唯一能看出来的是返回类型。但是,我不能输入任何文本,只允许输入数字

getText(): 返回包含接收者文本字段内容副本的字符串,如果没有内容,则返回空字符串

getSelection(): 返回所选内容,即接收器的位置


那么,为什么我们有两个不同的getter,我应该使用哪一个呢?

既然
微调器
表示一个数值选择,那么您应该使用
getSelection()
,因为它会准确返回所选内容


我不知道为什么
getText()
存在,但它将返回所选值的
字符串
表示形式,例如,如果
getSelection()
返回
int
7
getText()
将返回
字符串
作为文档状态,
getText()
返回当前显示的字符串,包括可能的非数值或超出最小/最大范围的值
getSelection()
返回当前或上一个有效整数值

通常,您需要使用
getSelection()
。这回答了你的问题吗

  • getText
    特别指出它可以是空的(我想这取决于平台是否发生过这种情况)。然后,它允许将这种情况与值0区分开来

  • 当使用带小数位数的
    微调器时,可以使用
    getText
    (请参见),因为在这种情况下
    getSelection
    与值的含义相去甚远。但请注意,十进制分隔符取决于当前的区域设置


  • 微调器
    是否可能有非数值?Mac上的@Baz微调器当然允许非数值。macOS微调器不是本机控件,因为macOS似乎不使用微调器。@greg-449很高兴知道。在Windows上,不能输入非数值。现在无法检查Linux。在Windows上,我既不能输入非数值,也不能将微调器保留为空。这就是为什么我想知道,为什么会有这样一个东西,比如
    getText()
    。但是,如果其他平台处理这个问题的方式不同,那么有两种方法似乎很好。这一点很好。我仍然建议使用
    getSelection()
    并通过使用
    getDigits()
    来“调整”结果,而不是解析从
    getText()返回的
    字符串
    。请注意,SWT控件的区域设置是平台的当前区域设置,不一定与当前Java区域设置匹配,这可能是支持
    getSelection()
    的另一个原因。如果您认为其中一个答案解决了问题,请单击绿色复选标记将其标记为“已接受”。或者,写一个你自己的答案,总结调查结果,并将其标记为已接受。这有助于将注意力集中在仍然没有答案的老帖子上。