在 eclipse 插件中,我試圖創建一個彈出窗口,該窗口在編輯器中激活并根據在彈出窗口中選擇的選擇將語法添加到字符串中。我有一個編輯類,它擴展了AbstractTextEditor,其中我嘗試使用Keylistener彈出一個包含字符串操作函數列表的窗口,然后選擇列表中的項目時,我希望用替換一些選定的內容從彈出窗口中的方法返回的新字符串。當我嘗試這樣做時(使用 2 個鏈接文件中的代碼),我收到以下錯誤:線程“AWT-EventQueue-0”中的異常 org.eclipse.swt.SWTException: Invalid thread access at org.eclipse.swt.SWT.error(SWT.java:4595) at org.eclipse.swt.SWT.error(SWT) .java:4510) 在 org.eclipse.swt.SWT.error(SWT.java:4481) 在 org.eclipse.swt.widgets.Widget.error(Widget.java:451) 在 org.eclipse.swt.widgets。 Widget.checkWidget(Widget.java:369) at org.eclipse.swt.custom.StyledText.getSelectionRange(StyledText.java:4743) at githubflavoredmarkdowneclipseplugin.MarkdownEditor.test(MarkdownEditor.java:140) at autocomplete.AutoComplete$1.keyPressed( AutoComplete.java:50) at java.awt.AWTEventMulticaster.keyPressed(Unknown Source) at java.awt.Component.processKeyEvent(Unknown Source) at javax.swing.JComponent.processKeyEvent(Unknown Source) at java.awt.Component。processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(未知來源) 在 java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source) 在 java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source) 在 java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source) 在 java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown SourceAssertions) ) 在 java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at爪哇。awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$500(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at 似乎當 autoupdate 類嘗試通知編輯器類已選擇更改時,它無法操作 styledText 變量。有誰知道如何解決這一問題?
1 回答

蕭十郎
TA貢獻1815條經驗 獲得超13個贊
您收到該異常的原因是,當您進行與 SWT 相關的 UI 更改時,您必須執行一個可運行的 vis Display.syncExec(myRunable) 否則會發生該異常。
添加回答
舉報
0/150
提交
取消