2017-04-03 23 views
3

對於SWT中的Spinner控制,getText()getSelection()之間有什麼區別?我唯一能做的就是返回類型。但是,我不能輸入任何文字,只允許輸入數字。SWT Spinner的getText()和getSelection()之間有什麼區別?

的getText(): 返回包含的接收器的文本字段,或一個空字符串的內容的副本,如果沒有內容的字符串。

getSelection(): 返回選擇,它是接收者的位置。

那麼,爲什麼我們有兩個不同的getter,我應該使用哪一個?

+1

如果您覺得某個答案可以解決問題,請點擊綠色複選標記將其標記爲「已接受」。或者,寫一個自己的答案,總結髮現並將其標記爲已接受。這有助於將重點放在仍然沒有答案的舊帖子上。 –

回答

2

由於Spinner代表數字選擇,因此您應該使用getSelection(),因爲它完全返回所選內容。

我不知道爲什麼getText()存在,但它會返回所選值的String表示,例如,如果getSelection()返回int7,getText()將返回String"7"

1

正如文檔所述,getText()返回字符串,就像當前顯示的一樣,包括可能的非數字值或超出最小/最大範圍的值。 getSelection()返回當前或最後一個有效整數值。

通常,您會想要使用getSelection()。這是否回答你的問題?

+0

Spinner可能有非數字值嗎? – Baz

+4

@Baz微調在Mac上肯定允許非數字值。 macOS微調不是一個本地控制,因爲macOS似乎不使用微調。 –

+0

@ greg-449這很好理解。在Windows上,您不能輸入非數字值。目前無法檢查Linux。 – Baz

0
  1. getText明確表示它可以是空的(我猜這取決於平臺是否發生這種情況)。然後,它允許從值0

  2. 區分這種情況下,在這種情況下使用時Spinner與十進制數字(見http://help.eclipse.org/luna/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Spinner.html#setDigits(int)),因爲getSelection是遠離值的含義,您可以使用getText。但請注意,小數點分隔符取決於當前的語言環境。

+2

好點。我仍然推薦使用'getSelection()'和「調整」結果,而不是解析'getText()'返回的'String'。 – Baz

+2

請注意,SWT控件的語言環境是平臺的當前語言環境,並且不一定與當前的Java語言環境匹配,這可能是支持getSelection()的另一個原因。 –

相關問題