|
|
|
Как работает JTextPane???
|
|||
|---|---|---|---|
|
#18+
проблема: Есть фрейм на которам окно для вывода сообщений (собственно JTextPane) и кнопка запуска программы так пределяю JTextPane Код: java 1. 2. 3. 4. В обработчике кнопки: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Собственно проблем в том, что сообщения в окне появляются не сразу как они выводятся программой (то есть по мере отработки), а все скопом после после полной отработки программы. Учитывая, что программа работает довольно долго, хотелось бы, чтобы сообщения выводились сразу. Но как???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 11:55 |
|
||
|
Как работает JTextPane???
|
|||
|---|---|---|---|
|
#18+
Вам нужен SwingWorker и понимание как работать с потоками в Swing https://docs.oracle.com/javase/tutorial/uiswing/concurrency/ https://docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html "блок каких-то команды" это ресурсоёмкая бизнес-логика. Она должна работать в параллельном потоке, чтобы не занимать Event Dispatch Thread (ETD), который отвечает за события и отрисовку GUI. Но после того как вы запустите свой процесс в фоновом потоке, вам нужно docOut.insertString() выполнять внутри EDT. Кривой код может выглядеть так. Это просто наглядная демонстрация идеи. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Конечно, стоит избавится от копипасты через новый метод. Но ещё лучше разобраться со SwingWorker. Тогда код будет ещё проще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 14:48 |
|
||
|
Как работает JTextPane???
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, спасибо буду разбираться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 15:09 |
|
||
|
Как работает JTextPane???
|
|||
|---|---|---|---|
|
#18+
Вот примеры: http://www.javacreed.com/swing-worker-example/ http://stackoverflow.com/questions/6089878/showing-text-in-jtextarea-while-calculating ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 15:21 |
|
||
|
Как работает JTextPane???
|
|||
|---|---|---|---|
|
#18+
BlazkowiczКривой код может выглядеть так. Это просто наглядная демонстрация идеи. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Попробовал этот способ. Естественно венес вызов insertString в отдельный метод. Сообщения стали появлються не дожидаясь окончания основной программы. НО!! Появляются не в порядке вызова из основной программы! То есть получается что в EDT сообщения ставятся в достаточно произвольном порядке? А не в порядке вызова из основной прграммы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2015, 11:29 |
|
||
|
Как работает JTextPane???
|
|||
|---|---|---|---|
|
#18+
sergnn, Хм. Попробуйте тогда invokeAndWait() вместо invokeLater(). Я такого эффекта не наблюдал никогда. Опять же. Лучше взять SwingWorker, я же привел ссылки на примеры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2015, 11:39 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38925157&tid=2125608]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
163ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 452ms |

| 0 / 0 |
