В моей функции для отображения текста в текстовом поле, я написал следующие строки коды, но не отображают любой текстJTextArea не отображающий текст
jTextArea1.setText(Packet +"\n" +jTextArea1.getText());
Я использую SwingWorker для выполнения фоновой задачи, вот мой код
public class SaveTraffic extends SwingWorker<Void, Void> {
public GUI f = new GUI();
@Override
public Void doInBackground() throws IOException {
//some code
sendPacket(captor.getPacket().toString());
return null;
}//end main function
@Override
public void done() {
System.out.println("I am DONE");
}
public void sendPacket(String Packet) {
f.showPackets(Packet);
}
}
и следующие строки кода я написал в моей GUI форме
public void showPackets(String Packet) {
jTextArea1.append(Packet);
}
Решение: общественного класса SaveTraffic расширяет SwingWorker {
public GUI f = new GUI();
@Override
public Void doInBackground() throws IOException {
f.add(jTextPane1);
// some code
publish(captor.getPacket().toString());
// the method below is calling sendPacket on the background thread
// which then calls showPackets on the background thread
// which then appends text into the JTextArea on the background thread
//sendPacket(captor.getPacket().toString());
return null;
}
@Override
protected void process(List<String> chunks) {
for (String text : chunks) {
jTextPane1.setText(text);
f.showPackets(text);
}
}
@Override
public void done() {
System.out.println("I am DONE");
}
}
Похоже, что более длинный фрагмент кода может оказаться полезным. – AlexR
Пожалуйста, дайте нам дополнительную информацию - достаточно, чтобы нам не приходилось все догадываться. –
В вашем новом коде ваш метод 'sendPacket (...)' должен быть 'showPackets (...)'? Если нет, то где вы называете 'showPackets (...)'? Вы знаете, что 'sendPacket (...)' вызывается из вашего фонового потока, и если вы пытаетесь записать его в JTextArea, то да, у вас проблема параллелизма. –