Я получаю страшный ...Java - SWT - New работоспособной при нажатии кнопки отправки
Exception in thread "Controller Thread" org.eclipse.swt.SWTException: Invalid thread access
Краткий обзор того, что я пытаюсь сделать:
У меня есть слушатель на Submit , я хотел бы начать новый поток из-за объема обработки, которое приложение будет делать с различными URL-адресами.
Это часть моего кода кнопки на Submit слушателя ...
submitButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
try {
// Check to see if http field is valid
httpValid = checkHttp(http);
if (httpValid) {
Thread t = new Thread(new UIMain(), "Controller Thread");
t.start();
} else {
System.out.println("Not a Valid http");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
Вот мой метод запуска ...
public void run() {
options = new Options();
setOptions(options);
Controller run = new Controller(options);
}
Точки ошибки в строку «setOptions (варианты) " опции - это объект, содержащий некоторые данные из полей SWF, которые будет вводить пользователь. setOptions довольно прямолинейно, в этой функции я собираю данные из полей SWF и устанавливаю их в объекте.
Позвольте мне знать, если мне нужно размещать больше коды ...
Примера некоторого кода я делаю в setOptions (опция) ...
String url = http.getText();
options.addUrl(url);
Спасибо,
Is UIMain() графический интерфейс? – Thomas
Да, это SWT GUI-окно – Whnunlife
Тогда ошибка в точности то, что она говорит. У вас уже есть один поток GUI (кнопка нажата), и вы создаете новый поток, который является графическим интерфейсом. Это явно запрещено с помощью swt. Ваш порожденный поток будет использовать Display.asyncExec() или syncExec() при работе с объектами gui. – Thomas