Я хотел бы задать несколько вопросов, касающихся использования потоков.Я просмотрел множество постов и ссылок, предложенных в этих постах, но все еще оказался пустым.У меня есть проект NetBeans, в котором есть несколько классов.Одним из них является класс Gui, который я использую, чтобы просто нажать кнопку, и выполняется некоторая обработка.Из графического интерфейса я вызываю экземпляр другого класса, который, в свою очередь, вызывает другие классы.Один из этих классов отправляет запрос Sparql во внутреннюю базу данных TDB.Все выходные на данный момент сохраняются в файлы.
Я хотел бы сделать так, чтобы класс, вызываемый из графического интерфейса пользователя, выполнялся в другом потоке, а также имел возможность обновлять EditorPane и TextArea наGui из одного или нескольких названных классов.До сих пор я пытался вызвать экземпляр класса Gui и использовать открытый метод внутри, но это не работает.Я вызываю экземпляр Gui с
Gui gui = new Gui();
gui.setEditorPaneText("File name is: " + fn);
, а метод в классе Gui
public void setEditorPaneText(final String string) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
setString(string);
EditorPane.setText(getString());
EditorPane.repaint();
}
});
}
Я попытался запустить отладчик, но обработка переходит с первой строки метода напоследняя фигурная скобка без обработки кода внутри.Мой класс Gui имеет следующий метод в качестве основного.Часть с комментариями была предыдущей версией очереди событий, которую я изменил, читая многочисленные сообщения по этой проблеме.
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Gui().setVisible(true);
throw new UnsupportedOperationException("Not supported yet.");
}
});
}
Ниже приведен предыдущий код основного метода, который я заменил после прочтениянекоторые из сообщений по этому вопросу.
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Gui().setVisible(true);
}
});
Любая полезная информация будет высоко ценится.Спасибо.