Java: Неверный доступ к потоку - всплывающее меню - PullRequest
0 голосов
/ 07 ноября 2018

В плагине eclipse я пытаюсь создать всплывающее окно, которое активируется в редакторе и добавляет синтаксис к строке в зависимости от выбора, выбранного во всплывающем окне. У меня есть класс редактора, который расширяет AbstractTextEditor, и внутри него я пытаюсь использовать keylistener для всплывающего окна, содержащего список функций манипуляции со строками, а затем, когда элемент в списке выбран, я хочу заменить некоторое выбранное содержимое на новая строка возвращается из метода во всплывающем окне. Когда я пытаюсь сделать это (с кодом в 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) в org.eclipse.swt.custom.StyledText.getSelectionRange (StyledText.java:4743) на githubflavoredmarkdowneclipseplugin.MarkdownEditor.test (MarkdownEditor.java:140) при автозаполнении. Автозаполнение $ 1.keyPressed (AutoComplete.java:50) at java.awt.AWTEventMulticaster.keyPressed (Неизвестный источник) в java.awt.Component.processKeyEvent (Неизвестный источник) в javax.swing.JComponent.processKeyEvent (Неизвестный источник) в java.awt.Component.processEvent (Неизвестный источник) в java.awt.Container.processEvent (Неизвестный источник) at java.awt.Component.dispatchEventImpl (неизвестный источник) в java.awt.Container.dispatchEventImpl (Неизвестный источник) в java.awt.Component.dispatchEvent (Неизвестный источник) в java.awt.KeyboardFocusManager.redispatchEvent (Неизвестный источник) в java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent (Неизвестный источник) в java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent (Неизвестно Источник) в java.awt.DefaultKeyboardFocusManager.typeAheadAssertions (Неизвестно Источник) в java.awt.DefaultKeyboardFocusManager.dispatchEvent (Неизвестный источник) at java.awt.Component.dispatchEventImpl (неизвестный источник) в java.awt.Container.dispatchEventImpl (Неизвестный источник) в java.awt.Window.dispatchEventImpl (неизвестный источник) в java.awt.Component.dispatchEvent (Неизвестный источник) в java.awt.EventQueue.dispatchEventImpl (Неизвестный источник) на java.awt.EventQueue.access $ 500 (неизвестный источник) at java.awt.EventQueue $ 3.run (неизвестный источник) at java.awt.EventQueue $ 3.run (неизвестный источник) at java.security.AccessController.doPrivileged (собственный метод) в java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege (Неизвестно Источник) в java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege (Неизвестно Источник) at java.awt.EventQueue $ 4.run (неизвестный источник) at java.awt.EventQueue $ 4.run (неизвестный источник) at java.security.AccessController.doPrivileged (собственный метод) в java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege (Неизвестно Источник) в java.awt.EventQueue.dispatchEvent (Неизвестный источник) в java.awt.EventDispatchThread.pumpOneEventForFilters (Неизвестный источник) в java.awt.EventDispatchThread.pumpEventsForFilter (Неизвестный источник) в java.awt.EventDispatchThread.pumpEventsForHierarchy (Неизвестный источник) в java.awt.EventDispatchThread.pumpEvents (Неизвестный источник) в java.awt.EventDispatchThread.pumpEvents (Неизвестный источник) at java.awt.EventDispatchThread.run (неизвестный источник)

Кажется, что когда класс autoupdate пытается сообщить классу редактора, что изменение было выбрано, он не может манипулировать переменной styledText. Кто-нибудь знает, как это исправить?

Два файла, содержащие этот код, можно просмотреть по следующим ссылкам: http://www.filedropper.com/markdowneditor http://www.filedropper.com/autocomplete

1 Ответ

0 голосов
/ 08 ноября 2018

Причина, по которой вы получаете это исключение, заключается в том, что при внесении изменений, связанных с пользовательским интерфейсом, связанным с SWT, вы должны выполнить исполняемый файл vis.syncExec (myRunable), иначе это исключение произойдет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...