Java:无效的线程访问 - 弹出菜单

在 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 变量。有谁知道如何解决这一问题?


烙印99
浏览 239回答 1
1回答

萧十郎

您收到该异常的原因是,当您进行与 SWT 相关的 UI 更改时,您必须执行一个可运行的 vis Display.syncExec(myRunable) 否则会发生该异常。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java