java - Java:无效的线程访问 - 弹出菜单
问题描述
在 Eclipse 插件中,我试图创建一个弹出窗口,该窗口在编辑器中激活,并根据在弹出窗口中选择的选项将语法添加到字符串中。I have an editor class that extends AbstractTextEditor and within it I am trying to use a keylistener to pop up a window that contains a list of string manipulation functions and then when an item in the list is selected I want to replace some selected content with the从弹出窗口中的方法返回的新字符串。当我尝试执行此操作时(使用 2 个链接文件中的代码),我收到以下错误:
线程“AWT-EventQueue-0”org.eclipse.swt.SWTException 中的异常:org.eclipse.swt.SWT.error(SWT.java:4595) 在 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) 在 java.awt.AWTEventMulticaster.keyPressed(Unknown Source) 在 java.awt.Component.processKeyEvent(Unknown Source) 在 javax.swing.JComponent.processKeyEvent(Unknown Source) 在 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( Unknown Source) at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source) at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source) at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source) at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source) ) 在 java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source) 在 java.awt.Component.dispatchEventImpl(Unknown Source) 在 java.awt.Container.dispatchEventImpl(Unknown Source) 在 java.awt.Window.dispatchEventImpl(Unknown Source) 在爪哇。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 java. awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)在 java.awt.EventQueue$4.run(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown来源)在 java.awt.EventQueue。dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(未知源)在 java.awt.EventDispatchThread.pumpEvents(未知源)在 java.awt.EventDispatchThread.run(未知源)运行(未知来源)运行(未知来源)
似乎当自动更新类试图通知编辑器类已选择更改时,它无法操作 styledText 变量。有谁知道如何解决这一问题?
可以通过以下链接查看包含此代码的两个文件: http ://www.filedropper.com/markdowneditor http://www.filedropper.com/autocomplete
解决方案
您收到该异常的原因是,当您进行与 SWT 相关的 UI 更改时,您必须执行一个可运行的 vis Display.syncExec(myRunable) 否则会发生该异常。
推荐阅读
- azure-devops - Azure Devops - 为每个部署环境创建一个映射变量
- docker - 如何在 OpenJ9/Alpine 容器上使用 JProfiler 12.0.3 设置远程分析
- java - Java随机名称生成器,选择单词的长度
- android - 使用 Android 导航组件隐藏抽屉项目
- testing - 如何在 SAP Web IDE 中使用模拟数据开始测试?
- c# - 如何在 Anglesharp 中检测 dom 元素的变化
- php - 从 Laravel Eloquent 中的 Db 列获取特定值
- database - 基于项目的角色的数据库设计
- google-app-engine - 此页面加载延迟的原因可能是什么?
- python - 从列表中删除项目的文本序列