1
我使用Eclipse RAP,並具有以下的用例:在Eclipse RAP中如何將當前UI狀態推送/強制給客戶端?
- 進入一個
Text
字段中搜索文本,並開始搜索 - 變化
Label
文本「搜索...」 - 做一個
Table
問題實際搜索(異步)和顯示效果,即使標籤應更改爲「搜索....「在開始實際搜索之前,它將更改爲」正在搜索....「搜索完成後。
我正在尋找的是推/強制/更新當前的UI狀態到客戶端的標籤更改後,之前的搜索方式:
- 進入一個
Text
領域,開始搜索文本搜索 - 變化
Label
文本「搜索...」 - 推動當前的UI狀態,客戶端
- 做實際的搜索(異步),並顯示結果在
Table
這裏是一些示例代碼:
Label statusLabel = new Label(parent, SWT.NONE);
Text searchText = new Text(parent, SWT.SEARCH);
searchText.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetDefaultSelected(SelectionEvent e) {
// change label
statusLabel.setText("searching...");
// HERE force client update
// start searching
Display.getCurrent().asyncExec(new Runnable() {
@Override
public void run() {
// do actual search
}
});
}
});
如果我運行在一個獨立的線程搜索,我將無法訪問用戶界面嗎?例如更新狀態標籤,更新結果表。我會遇到「無效的線程訪問」異常,我猜? –
您可以在後臺線程中使用'asyncExec'(或'syncExec')來運行您的UI更新代碼 - 就是這樣。 –
Display.getDefault()和Display.getCurrent()在線程中都是null,我必須在啓動線程之前將其存儲爲變量。 –