0
我有一個Java SWT應用程序,它運行與聊天服務器連接的單獨線程(UI除外)。如果我想更新從連接線的UI組件,我可以很容易地做到這一點:Java SWT - 從組件向其他線程返回數據的最佳方式
myUIclass.MyShellReference.getDisplay().asyncExec(
new Runnable() {
public void run(){
... update some UI component
}
}
);
我的問題是我無法找到從UI線程上的組件GET數據的好辦法。一個例子是想在我的連接線拉訂立UI線程文本框中的字符串,創建方法......
private String getTheText(){
final String thetext;
myUIclass.MyShellReference.getDisplay().asyncExec(
new Runnable() {
public void run(){
// The below wont' work because thetext is final
// which is required in a nested class... blah!
thetext = myUIclass.getTextFromSomeTextBox();
}
}
);
return thetext;
}
上面的問題是,我無法真正捕捉返回什麼從getTextFromSomeTextBox()方法中,因爲我只能使用不能分配的最終變量。我知道的唯一的其他解決方案是使用一些Atomic參考對象,但必須有更好的方法,因爲我確信人們總是需要這樣做。
任何幫助將不勝感激!
最終變量可以分配,但只能分配一次。 – 2012-02-03 00:12:09