|
3 / 3 / 0
Регистрация: 22.02.2016
Сообщений: 97
|
|
Трабл с выводом текста в GUI Java03.03.2016, 21:44. Показов 2051. Ответов 21
Метки нет (Все метки)
Не знаю я, как правильно описать свою проблему, так что записал видео.
Записывал на скорую руку, так что возможно говорил в некоторых местах без выражения и не понятно. Но суть проблемы сказал вроде чётко. Кто знает в чём проблема - прошу помощи. Ссылка на видео [Ютуб].
0
|
|
| 03.03.2016, 21:44 | |
|
Ответы с готовыми решениями:
21
Java Socket Chat + GUI трабл с сообщениями Вывод текста Java Swing GUI Трабл с выводом |
|
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
|
|
| 04.03.2016, 09:58 | |
|
Что происходит если убрать UI из уравнения? Всё работает?
0
|
|
|
3 / 3 / 0
Регистрация: 22.02.2016
Сообщений: 97
|
|
| 04.03.2016, 13:16 [ТС] | |
|
Да, всё работает стабильно. Проблем не наблюдается.
0
|
|
|
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
|
|
| 04.03.2016, 13:31 | |
|
Не знаю, я бы попробовал UI в отдельном потоке запускать.
0
|
|
|
3 / 3 / 0
Регистрация: 22.02.2016
Сообщений: 97
|
|
| 05.03.2016, 11:31 [ТС] | |
|
Потоки? Слышал по них, но ещё не узнавал что и как в них работает.
Видно пришло время... Добавлено через 31 минуту Посмотрев туториал по потокам, я понял, что потоки позволяют выполнять не 1 задачу - одновременно. Но вот пока как применить это - я не понял. Пойду ещё посмотрю и почитаю. Кстати, а может у Вас найдётся туториал(лично проверен Вами), где будет подробно всё рассказано\описано? Добавлено через 20 часов 57 минут Вот у меня GUI запускается через главный поток, т.е. оно было сгенерировано в GUI Bulder нетбинса. Как же я его то в отдельно потоке запущу?
0
|
|
|
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
|
||||||
| 05.03.2016, 11:47 | ||||||
|
1) Или UI запускать потом;
2) Или запускать читалку потом; В итоге будет что-то типа:
0
|
||||||
|
3 / 3 / 0
Регистрация: 22.02.2016
Сообщений: 97
|
|||||||||||
| 05.03.2016, 21:20 [ТС] | |||||||||||
|
Вроде сделать.
Изменения нет. Метод main
отдельный класс, от куда идёт запуск GUI...
Добавлено через 4 минуты Я вроде как сделал так же (выше пример), т.е. запускаю новый поток, через который инициализируется интерфейс, а далее уже в потоке main запускаю "читалку". Добавлено через 9 часов 25 минут Я в тупике...
0
|
|||||||||||
|
20 / 15 / 5
Регистрация: 20.11.2014
Сообщений: 115
|
|
| 07.03.2016, 21:34 | |
|
2 потока.
1. EDT - сам интерфейс. Оттуда запускаем логику программы. 2. Переделать парсер, ибо я видел там много циклов. Вот еще: https://docs.oracle.com/javase... ation.html
0
|
|
|
3 / 3 / 0
Регистрация: 22.02.2016
Сообщений: 97
|
|
| 08.03.2016, 09:36 [ТС] | |
|
Спасибо, что хоть кто то откликнулся помочь.
1. "EDT - сам интерфейс. Оттуда запускаем логику программы." - не понял данную строчку. Где это находится? 2. Парсер... за 1 раз работает только 3 цикла [совпадения строк со словами в массивах]. У меня есть проверка, какой раз сканируется файл, если он сканируется не в первый раз, то он сканируется там, где остановился. Там глобальная переменная проверяется при начале сканирования, и если по ней видно, что сканирование полное уже было, то пропускается уже прочитанные строки в файле.
0
|
|
|
20 / 15 / 5
Регистрация: 20.11.2014
Сообщений: 115
|
|
| 08.03.2016, 10:12 | |
|
ImagePrototype,
1. Когда создаёте UI, то главный поток, где находится UI называется EDT(Event Dispatch Thread), оттуда уже можно запускать побочные потоки. 2. Watch Service API позволяет узнать, изменился ли файл не открывая его.(в любом случае эффективнее ваших циклов) 3. Переписать считыватель, так как возможно он и зависает. 4. Предоставить код нам, может найдётся человек, который перепишет его так, как Вам надо.
0
|
|
|
3 / 3 / 0
Регистрация: 22.02.2016
Сообщений: 97
|
||||||
| 08.03.2016, 11:44 [ТС] | ||||||
|
Я походу не правильно написал.
Файл у меня проверяется не в циклах. В циклах проверяется каждая считанная строчка на совпадения в массивах. Вот так проверяется файл на изменение его размера. Передвижение, пропуск уже прочитанных данных по файлу и сканирование происходит с помощью класса RandomAccessFile .
И да, если запускать программу без интерфейса, то работает всё чудесно. Без зависаний и вылетов. Так что, у меня конкретно проблемы, когда подключаю интерфейс.
0
|
||||||
|
20 / 15 / 5
Регистрация: 20.11.2014
Сообщений: 115
|
||||||
| 08.03.2016, 11:50 | ||||||
|
О боже, это невозможно читать!
Вам же уже сказали, запустить в отдельном потоке анализатор и парсер. Псевдокод:
0
|
||||||
|
3 / 3 / 0
Регистрация: 22.02.2016
Сообщений: 97
|
|
| 08.03.2016, 12:50 [ТС] | |
|
Да, туплю. Сильно. Ибо многого ещё не знаю.
Я правильно понял? Мне требуется сделать так, что бы: 1. Сам интерфейс запускался в главном потоке. 2. С главного потока запускать поток на сканирования файла на изменения его размера. 3. Сделать отдельный поток на само сканирование файла. Всё правильно?
0
|
|
|
20 / 15 / 5
Регистрация: 20.11.2014
Сообщений: 115
|
|
| 08.03.2016, 14:08 | |
|
ImagePrototype,
Да.
1
|
|
|
3 / 3 / 0
Регистрация: 22.02.2016
Сообщений: 97
|
|
| 10.03.2016, 18:31 [ТС] | |
|
Здравствуйте.
У меня появилось время и я решил попробовать сделать то, что было написано выше. Собственно вот видео с тем что получилось... Осталось только добавить то, что я не сказал в видео про таймер. Без всяких потоков и зависаний он работает стабильно, короче говоря - с таймеров всё нормально.
0
|
|
|
20 / 15 / 5
Регистрация: 20.11.2014
Сообщений: 115
|
|
| 10.03.2016, 18:44 | |
|
Вы java по туториалам учите что ли? Рекомендую Хорстмана, хотя бы 1 том.(9 издание)
По поводу Ваших вопросов: 1. Данные в GUI можно изменить только через EDT. 2. Вы создаёте новый экземпляр класса и пытаетесь изменить jTextFiled1 в main, хотя в это время он не инициализирован. Вы инициализируете его конструктором(GUI), но результат игнорируете. 3. Код таймера ужасен. Вам нужно только 2 потока. 1 - EDT, 2 - логика программы. Не нужно плодить больше потоков. 4. Обязательно прочитайте хотя бы 4-5 глав в книге Хорстмана, отпадёт более 60% вопросов.
1
|
|
|
3 / 3 / 0
Регистрация: 22.02.2016
Сообщений: 97
|
|
| 10.03.2016, 19:10 [ТС] | |
|
1. Эм... Туториалы чисто для каких то отдельных случаев (потоки к примеру) , всё остальное по урокам на ютубе.
Не сочтите на пиар, кидаю чисто для того, что бы поняли, от куда брал базовую информацию [1] и [2] . 1. 1. Данные в GUI можно изменить только через EDT. - не знал. Спасибо. 2. Вы создаёте новый экземпляр класса и пытаетесь изменить jTextFiled1 в main, хотя в это время он не инициализирован. Вы инициализируете его конструктором(GUI), но результат игнорируете. : 1. Как не инициализирован? Я ж по идее его запустил, дал ему уже какие либо указания. 2. Не понимаю - результат игнорируете, сможете по подробнее отписать или кинуть где прочитать. 3. Таймер. Код копипастил, в дальнейшем хотел более детальней его изучить и сделать нормально. Так, про потоки понял. Только 2 требуется. 4. Немедленно попытаюсь найти её и начать читать. Огромное спасибо за помощь. Добавлено через 12 минут Книжку уже нашёл и скачал)
0
|
|
|
20 / 15 / 5
Регистрация: 20.11.2014
Сообщений: 115
|
|
| 10.03.2016, 19:18 | |
|
Это не паскаль же! Вы не понимаете принципов разработки, Ваш код ужасен! Если бы я был Вашим преподавателем - не поставил бы зачетку.
Скажу честно, настолько ужасного кода я в жизни не видел. Честное слово. Почитайте книгу, первые 2-3 главы дадут Вам много знаний. И еще, не надейтесь на всяческие туториалы. Они нужны для либо знающих хоть что-то, либо для тех, кто хочет посмотреть чужие реализации. На счет Вашего вопроса: В программе, когда запускается main, еще нет никаких объектов, метод статичный. Вы создаёте через EDT новый экземпляр класса с GUI. В том классе уже инициализируется Ваш jTextField. С тем объектом Вы уже можете взаимодействовать. на счет Ваших циклов не скажу ничего, но это явно кривая архитектура. Ничего, я тоже когда-то делал такие ошибки =) Добавлено через 21 секунду Ссылку удалите, забанят!
0
|
|
|
3 / 3 / 0
Регистрация: 22.02.2016
Сообщений: 97
|
|
| 10.03.2016, 19:26 [ТС] | |
|
1. Прям "обкакали" меня, ну да ладно, сам понимаю, что ещё много чего не знаю.
Ну, учился сам, как преподавали на ютубе) 2. А вы являетесь чьим то преподавателем? ![]() 3. Там не jTextField, а jTextArea, хотя в принципе не важно) 4. Циклы выглядят страшно конечно, но по другому пока не знаю как сделать. 5. Вы создаёте через EDT новый экземпляр класса с GUI. В том классе уже инициализируется Ваш jTextField. С тем объектом Вы уже можете взаимодействовать. - я вроде это как знаю, слышал в уроках, но забыл это, когда начал что то делать с интерфейсами. 4. Ссылку попробую удалить, если конечно лимит редактирования не кончился. Спасибо за ответы. Добавлено через 15 секунд Песец, удалить ссылки уже нельзя)
0
|
|
|
20 / 15 / 5
Регистрация: 20.11.2014
Сообщений: 115
|
|
| 10.03.2016, 19:41 | |
|
Нет, я не учитель, просто читал Хорстмана.(Так и не дочитал =))
Я же скидывал ссылку, https://docs.oracle.com/javase... ation.html , это специальное API, и сработает оно сразу же, как файл изменится, не нужно будет каждые 5 секунд проверять файл.
0
|
|
| 10.03.2016, 19:41 | |
|
Помогаю со студенческими работами здесь
20
Трабл с выводом Трабл с выводом данных из БД Трабл с вводом/выводом Трабл с выводом страницы в textarea Трабл с выводом в мемо. Матрица. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|