powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вывод значения из потока в JTextArea
5 сообщений из 5, страница 1 из 1
Вывод значения из потока в JTextArea
    #37999566
Hikarium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, я только начал изучать джаву, извините если глупый вопрос, или если я пытаюсь сделать то что не положено. Есть задание показать работу нескольких потоков в графическом режиме, используя библиотеку Swing, я не придумал ничего лучше чем выводить значения бесконечно работающих потоков в JTextArea, как в консоль через System.out.println(). Но не пойму как из потока обратится к объекту JTextArea, допустим простой поток Counter
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
class Counter extends Thread
{	int Count;
	public Counter()
	{Count=0;}
	public Counter(int x)
	{Count=x;}
public void run()
	{	while(true)
		{Count++;
		try {sleep(10);} 
		}
	}
	}


Как можно при каждом изменении значения выводить Count в JTextArea ?
...
Рейтинг: 0 / 0
Вывод значения из потока в JTextArea
    #37999618
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hikarium,

http://web.cocc.edu/pcasey/cis162/Samples/threads.htm] http://web.cocc.edu/pcasey/cis162/Samples/threads.htm
...
Рейтинг: 0 / 0
Вывод значения из потока в JTextArea
    #37999793
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-voidHikarium,
http://web.cocc.edu/pcasey/cis162/Samples/threads.htm] http://web.cocc.edu/pcasey/cis162/Samples/threads.htm
Это недоработаный пример. При вызове setText() из параллельного потока возможны рандомные исключения в документе и *TextAreaUI. setText() нужно вызывать в Event Dispatch Thread, через SwingUtilities.invokeLater()/invokeAndWait().
http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html
...
Рейтинг: 0 / 0
Вывод значения из потока в JTextArea
    #37999796
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HikariumЗдравствуйте, я только начал изучать джаву, извините если глупый вопрос, или если я пытаюсь сделать то что не положено. Есть задание показать работу нескольких потоков в графическом режиме, используя библиотеку Swing, я не придумал ничего лучше чем выводить значения бесконечно работающих потоков в JTextArea, как в консоль через System.out.println(). Но не пойму как из потока обратится к объекту JTextArea, допустим простой поток Counter
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
class Counter extends Thread
{	int Count;
	public Counter()
	{Count=0;}
	public Counter(int x)
	{Count=x;}
public void run()
	{	while(true)
		{Count++;
		try {sleep(10);} 
		}
	}
	}


Как можно при каждом изменении значения выводить Count в JTextArea ?

Код: java
1.
2.
3.
4.
5.
SwingUtilities.invokeAndWait(new Runnable(){
public void run(){
     myTextArea.setText(count);
}
})


Но это не самое удобное решение. На практике так делают редко. Подобная задача решается свинговым таймером javax.swing.Timer. Он уже запускается в EDT и дополнительная синхронизация не нужна.
Либо когда есть долгоиграющие задачи, то используют SwingWorker.
...
Рейтинг: 0 / 0
Вывод значения из потока в JTextArea
    #37999826
HunterNomad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Вместо myTextArea.setText(count); я бы написал myTextArea.append(count); .
Сие позволит добавлять вывод в конец myTextArea .
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Вывод значения из потока в JTextArea
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]