0
在從「OK」按鈕的選擇偵聽器嘗試從SWT對話框中的文本字段訪問字段值時,我收到以下異常。SWT/JFace對話框中的OK按鈕選擇偵聽器中的錯誤
org.eclipse.swt.SWTException: Widget is disposed
我可以理解這個錯誤是因爲在我試圖訪問它時已經放棄了對話框。但是我沒有做任何明確的調用來處理shell。
點擊「確定」按鈕時會自動處理對話框嗎?有什麼方法可以重寫嗎?或者我在這裏做錯了什麼?
欣賞任何幫助或指針。下面相關的代碼片段:
public class MyDialog extends Dialog {
/** The file Name Text field. */
private Text fileNameText;
/** The constructor. **/
protected MyDialog(Shell parentShell) {
super(parentShell);
}
/** Create Dialog View. **/
protected Control createDialogArea(Composite parent) {
Composite mainComposite = (Composite) super.createDialogArea(parent);
fileNameText = new Text(mainComposite, SWT.BORDER);
fileNameText.setText("");
fileNameText.setBounds(0, 20, 428, 20);
return mainComposite;
}
/** Override method to set name and listener for 'OK' button. **/
protected void createButtonsForButtonBar(Composite parent) {
super.createButtonsForButtonBar(parent);
Button submitButton = getButton(IDialogConstants.OK_ID);
submitButton.setText("Review");
setButtonLayoutData(submitButton);
// Perform Selected CleanUp activity on Submit Click.
submitButton.addSelectionListener(new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent e) {
// do something.
if (fileNameText.getText().isEmpty()) {
return;
}
}
@Override
public void widgetDefaultSelected(SelectionEvent e) {
}
});
}
}
謝謝..奏效。唯一的問題是,視圖有很多輸入,所有這些都需要在調用'okPressed'方法之前分配給變量。 – 2014-10-10 09:08:17
是的,它可能會變得混亂。您可以使用[JFace數據綁定](http://www.vogella.com/tutorials/EclipseDataBinding/article.html)自動設置類中的字段。 – 2014-10-10 09:10:47
謝謝..我會看看同樣的。 – 2014-10-10 12:33:12