Итак, программа, которую я делаю, использует 2 потока: один для графического интерфейса и один для выполнения работы.
Я хочу, чтобы обновления из рабочего потока/класса распечатывались в JTextArea в классе GUI. Все, что я пробовал, похоже, не сработало. Я добавил строки для вывода текста на консоль сразу после строк, чтобы добавить текст в JTextArea, чтобы убедиться, что он попал в строку, но каждый раз, когда консоль получала текст, но никаких изменений в JTextArea в графическом интерфейсе не происходило.
public static void consoleText(String consoleUpdate){
GUI.console.append(consoleUpdate);
}
Я попробовал это в рабочем классе, но ничего не произошло. Кто-нибудь знает, как решить мою проблему?
Редактировать:
ГЛАВНАЯ.JAVA
public class main {
public static void main(String[] args) {
Thread t1 = new Thread(new GUI());
t1.start();
}
GUI.JAVA
public class GUI extends JFrame implements Runnable{
public static JTextArea console;
private final static String newline = "\n";
public void run(){
GUI go = new GUI();
go.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
go.setSize(350, 340);
go.setVisible(true);
}
public GUI(){
setLayout(new FlowLayout());
console = new JTextArea(ConsoleContents, 15, 30);
add(console);
}
РАБОТА.JAVA
...{
consoleText("\nI want this text on the JText Area");
}
public static void consoleText(String consoleUpdate){
GUI.console.append(consoleUpdate);
}
JTextArea#append("String")
- person mKorbel   schedule 24.10.2012Runnable
и передать егоSwingUtilities.invokeLater(Runnable)
. Это может заставить вас думать, что вам нужен Runnable, а не поток. - person Guillaume Polet   schedule 24.10.2012