@MTankov

Как обновлять TextArea в Swing Java?

Собственно в отдельном потоке постоянно проверяю на изменение строки sendToView и goods, однако приложение точно также зависает/крашится итд. Когда тестил и при запуске сразу заносил в TextArea рандомный текст, то он не отображался, однако программно показывало что там всё было (logTextArea.getText() не пустой, с нужным текстом). Что нужно изменить?

class SomeThing extends App implements Runnable       
    {
        public void run()	
        {
        while(1==1){
        if (sendToView != "" || goods != "") if (sendToView != "") {
            logTextArea.append(sendToView);
            sendToView = "";
            System.out.println(logTextArea.getText());
        } else if (goods != "") {
            goodTextArea.append(goods);
            goods = "";
        }
    }
}
}

public class App {
...
    String sendToView = "";
    String goods = "";
    static SomeThing mThing;
...
public static void main(String[] args) {
        JFrame frame = new JFrame("App");
        frame.setContentPane(new App().panelMain);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
        mThing = new SomeThing();
        Thread myThready = new Thread(mThing);
        myThready.start();


    }

}
  • Вопрос задан
  • 454 просмотра
Пригласить эксперта
Ответы на вопрос 1
@jkotkot
режим сарказма
Вы бы пока со сравнением строк и вообще объектов разобрались, прежде чем лезть в UI и многопоточность. Ваш код просто ужасен, потому что вы совершили все возможные ошибки в этих нескольких строчках.
Ну, а по делу - с графикой можно работать только из EventThread потому, что она не потокобезопасна. читайте как запускать код в потоке графики. см SwingUtilities.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы