2011-01-06 29 views

回答

8

根據SWT:標準部件工具包,第1卷,forceFocus():

強制控制接收鍵盤 事件。通常不會接受鍵盤輸入的控件 將使用此方法。如果因爲任何原因不能將焦點分配給 ,則返回false爲 。

也:

一般來說,迫使焦點 東西,你永遠都不想去做。例如,強制關注標籤 不是很有用,因爲標籤 沒有以指示 的方式繪製它們可以接受輸入。強制重點 到一個不期望它的控件 可以混淆用戶,因爲他們沒有 想法,他們的擊鍵發生在哪裏。 應用程序應始終使用 setFocus()分配焦點。

3

即將在後期的方式在這一個,但我只是完成了與此相關的一些長期頭打漿對壁會議,我想我會做一個快速報告:

如果你的控制有孩子,setFocus(myControl)將在子樹上進行深度優先搜索並將焦點設置爲最低的第一個孩子。另一方面,forceFocus(myControl)只會將焦點設置到myControl並完成它。

我遇到了一個帶有GridLayout的無模式對話框,其中大多數網格單元都是一組需要焦點的Canvas子類對象。 (是的,這有點奇怪,但我希望能夠將鼠標懸停在單元格上並輸入內容。)網格中的最後一個控件是一個「完成」按鈕,我將其設置爲默認選擇。

當鼠標離開畫布單元格時,我正在做一個setFocus(myDialogShell),它立即將焦點設置到第一個畫布元素,防止「完成」按鈕接收\ r並處置整個骯髒的業務。另一方面,forceFocus(myDialogShell)做到了。

相關問題