Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2018, 12:59   #1
ivan.tiran
Форумчанин
 
Аватар для ivan.tiran
 
Регистрация: 24.08.2011
Сообщений: 138
По умолчанию Как из ArrayList<String> передать строку в JTextArea?

Добрый день. Такие дела.

Если есть чисто ArrayList<String> то я строки могу в цикле через append в JTextArea передать.
Но, у меня другая ситуация. Я к ArrayList глобал инстанс обращаюсь из статического метода из разных потоков, когда добавляю записи.
А обратиться из статического метода к jTextArea не могу. Я пробовал по клику мыши из ArrayList добавлять записи в jTextArea. Работает. Но, не будет же пользователь постоянно кликать мышкой, чтобы увидеть записи.

Как мне в интерфейс забрать строки?
ivan.tiran вне форума Ответить с цитированием
Старый 29.11.2018, 13:07   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Не обращаться из статического (зачем? всегда можно обойтись без этого) или передать экземпляр класса.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 29.11.2018, 13:54   #3
ivan.tiran
Форумчанин
 
Аватар для ivan.tiran
 
Регистрация: 24.08.2011
Сообщений: 138
По умолчанию

Это же неудобно в каждый класс тащить указатель на коллекцию. Проще по статическому полю обратиться, когда записываешь. Или есть идея, как записывать по-другому. Я же из разных потоков из разных классов обращаюсь.
ivan.tiran вне форума Ответить с цитированием
Старый 29.11.2018, 14:04   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Да полно способов, зависит от задачи.
Цитата:
Сообщение от ivan.tiran Посмотреть сообщение
Проще по статическому полю обратиться, когда записываешь
Ну тогда что угодно "проще" делать с глобальными переменными.
Да и ссылку на окно или его элементы никто не мешает туда положить.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 29.11.2018 в 14:11.
Alex11223 вне форума Ответить с цитированием
Старый 29.11.2018, 14:06   #5
ivan.tiran
Форумчанин
 
Аватар для ivan.tiran
 
Регистрация: 24.08.2011
Сообщений: 138
По умолчанию

Получается, что единственным способом организовать вывод пользователю информации из разных классов в разных потоках является таскание за собой ссылки на jTextArea? Не будет проблем при обращении к этому компоненту из разных потоков?
ivan.tiran вне форума Ответить с цитированием
Старый 29.11.2018, 14:11   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Причем тут потоки вообще?
Способы зависят от конкретной задачи.
Колбеки самое простое и доступное везде (с Java 8 с помощью лямбд).

Цитата:
Сообщение от ivan.tiran Посмотреть сообщение
Не будет проблем при обращении к этому компоненту из разных потоков?
Какое отношение это имеет к статику/не-статику? Будет, надо синхронизировать.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 29.11.2018, 14:16   #7
ivan.tiran
Форумчанин
 
Аватар для ivan.tiran
 
Регистрация: 24.08.2011
Сообщений: 138
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Причем тут потоки вообще?
Способы зависят от конкретной задачи.
Колбеки самое простое и доступное везде (с Java 8 с помощью лямбд).


Какое отношение это имеет к статику/не-статику? Будет, надо синхронизировать.
Спасибо. Пойду учить колбэки. В qt я посылал сигнал из глобал инстансе класса и ловил его в интерфейсе.
ivan.tiran вне форума Ответить с цитированием
Старый 30.11.2018, 15:08   #8
ivan.tiran
Форумчанин
 
Аватар для ivan.tiran
 
Регистрация: 24.08.2011
Сообщений: 138
По умолчанию

Спасибо. Разобрался. Я знал, что это можно сделать с помощью интерфейса, но не знал, что называется это колбэком. Проблема была в том, что метод статический, не хотел цепочку колбэков делать. А потом пришло в голову, что никто не мешает листенера сделать статическим, а в jframe реализовать методы этого интерфейса.
ivan.tiran вне форума Ответить с цитированием
Старый 30.11.2018, 15:34   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от ivan.tiran Посмотреть сообщение
это можно сделать с помощью интерфейса, но не знал, что называется это колбэком
ну это потому что в Джаве ООП головного мозга, а так по сути это просто функция передаваемая куда-то, как во всех других языках, включая С, С++.
С лямбдами из Java 8 самому создавать класс реализующий интерфейс для вызова не обязательно. До 8 были анонимные классы.

Полноценных событий (как сигналы/слоты в Qt) тоже нет из коробки, но с одним подписчиком и без необходимости отписываться и т.п. они и не нужны.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать значение string в fstream? mc13 Общие вопросы C/C++ 5 14.02.2015 18:25
Как передать вместо свойства строку? BoozZzilla Общие вопросы Delphi 6 12.12.2012 19:28
Как передать переменную String в SelectCommand в SqlDataSource? sergey_dmitrievich ASP.NET 1 18.10.2011 13:55
Как передать в функцию указатель на String avd Общие вопросы C/C++ 6 06.06.2010 17:52
Как передать TSrings в String??? newprog12 Общие вопросы Delphi 4 08.01.2010 23:24