|
|
|
Не получается создать аплет, который увеличивает число на 1 за 1 секунду. Господа помогите
|
|||
|---|---|---|---|
|
#18+
Суть состоит в следующем... Имеется два класса ClockApplet и Clock... В первом классе я запускаю поток, метод run которого находится во втором классе Clock. В методе run я выполняю метод paint который должен выводить число, которое при каждом вызове метода paint увеличивается на единицу. Сообственно вот код: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. Вот нужно сделать так чтобы поток увеличивал число на единицу, у меня к сожалению не получается... Господа помогите, буду очень благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 15:02:32 |
|
||
|
Не получается создать аплет, который увеличивает число на 1 за 1 секунду. Господа помогите
|
|||
|---|---|---|---|
|
#18+
moskov199Суть состоит в следующем... Имеется два класса ClockApplet и Clock... В первом классе я запускаю поток, метод run которого находится во втором классе Clock. В методе run я выполняю метод paint который должен выводить число, которое при каждом вызове метода paint увеличивается на единицу. Сообственно вот код: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. Вот нужно сделать так чтобы поток увеличивал число на единицу, у меня к сожалению не получается... Господа помогите, буду очень благодарен. P. S. Число выводимое аплетом не меняется... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 15:09:56 |
|
||
|
Не получается создать аплет, который увеличивает число на 1 за 1 секунду. Господа помогите
|
|||
|---|---|---|---|
|
#18+
Java Swing/AWT GUI работает совершенно иначе. Кроме того что вы сами вызываете метод paint, его так же вызывает paint manager в Java. Основные ошибки - Лучше использовать JApplet, хотя и не критично. - Инкремент нельзя делать в методе paint(). Он может вызываться намного чаще, чем раз в секунду. Вообще начните отделять модель от представления. Счетчик - это модель. Реализация метода paint() это отображение модели. - sleep здесь не применим. Мы не может точно знать сколько времени заняла отрисовка. Вообще поток мог быть отложен системой на некоторое время. Поэтому таймер должен работать независимо от потоков и синхронизировать своё состояние со счетчиком системного времени. - Анимация в целом не простая задача в Swing. Можете посмотреть примеры кода в JDK/demo. Но изучать, наверное, лучше было сразу JavaFX. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 15:10:58 |
|
||
|
Не получается создать аплет, который увеличивает число на 1 за 1 секунду. Господа помогите
|
|||
|---|---|---|---|
|
#18+
BlazkowiczJava Swing/AWT GUI работает совершенно иначе. Кроме того что вы сами вызываете метод paint, его так же вызывает paint manager в Java. Основные ошибки - Лучше использовать JApplet, хотя и не критично. - Инкремент нельзя делать в методе paint(). Он может вызываться намного чаще, чем раз в секунду. Вообще начните отделять модель от представления. Счетчик - это модель. Реализация метода paint() это отображение модели. - sleep здесь не применим. Мы не может точно знать сколько времени заняла отрисовка. Вообще поток мог быть отложен системой на некоторое время. Поэтому таймер должен работать независимо от потоков и синхронизировать своё состояние со счетчиком системного времени. - Анимация в целом не простая задача в Swing. Можете посмотреть примеры кода в JDK/demo. Но изучать, наверное, лучше было сразу JavaFX. Ух ты... Теперь понятно почему не работает((. Огромное спасибо за совет! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 15:20:26 |
|
||
|
Не получается создать аплет, который увеличивает число на 1 за 1 секунду. Господа помогите
|
|||
|---|---|---|---|
|
#18+
Забыл написать. Вызывать метод paint() напрямую тоже особого смысла нет. Нужно указать что данные на экране не актуальны и сообщить системе что указанный регион стоило бы перерисовать. Тут статья: http://www.oracle.com/technetwork/java/painting-140037.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 15:29:24 |
|
||
|
Не получается создать аплет, который увеличивает число на 1 за 1 секунду. Господа помогите
|
|||
|---|---|---|---|
|
#18+
moskov199, sleep(1000) не годиться на роль того самого маятника чтобы регулировать ход часов. Текущее время нужно получать вызовом системной функции типа System.currentTimeMillis() и потом форматировать его в ЧЧ:ММ:CC. А sleep можно использовать для периодической анимации но весьма ограниченно. Кстати sleep не самый удачный вариант для оптимального "простоя" потоков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 19:01:26 |
|
||
|
Не получается создать аплет, который увеличивает число на 1 за 1 секунду. Господа помогите
|
|||
|---|---|---|---|
|
#18+
maytonА sleep можно использовать для периодической анимации но весьма ограниченно. Боюсь представить зачем sleep в анимации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 19:03:15 |
|
||
|
Не получается создать аплет, который увеличивает число на 1 за 1 секунду. Господа помогите
|
|||
|---|---|---|---|
|
#18+
moskov199, отрисовку нельзя вызывать из постороннего Thread'a непосредственно. Надо обернуть процедуру отрисовки в отдельный Runnable и запускать его на UI Thread с помощью EventQueue.invokeLater . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2013, 11:09:54 |
|
||
|
Не получается создать аплет, который увеличивает число на 1 за 1 секунду. Господа помогите
|
|||
|---|---|---|---|
|
#18+
rfqотрисовку нельзя вызывать из постороннего Thread'a непосредственно. Надо обернуть процедуру отрисовки в отдельный Runnable и запускать его на UI Thread с помощью EventQueue.invokeLater . Какой в этом смысл? Отрисовку вообще не стоит дергать напрямую. Даже из EDT. Кстати, чем SwingUtilities не подошли? Отрисовку дергает инфраструктура тогда когда ей нужно. Вызывать её дополнительно напрямую это верный путь вызвать тормоза приложения. Можно говорить определенному контролу что его состояние поменялось и пора бы обновиться на UI. А когда будет непосредственно вызвана отрисовка это уже дело Swing/AWT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2013, 11:16:44 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38405108&tid=2128519]: |
0ms |
get settings: |
22ms |
get forum list: |
35ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
50ms |
get topic data: |
26ms |
get forum data: |
5ms |
get page messages: |
102ms |
get tp. blocked users: |
2ms |
| others: | 312ms |
| total: | 568ms |

| 0 / 0 |
