|
|
|
Двойной вызов paintComponent
|
|||
|---|---|---|---|
|
#18+
День добрый! Простейший случай: кладу на JFrame экземпляр модифицированного JPanel с переопределенным paintComponent ... Почему-то он вызывается дважды ... Так должно быть ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2012, 11:54:44 |
|
||
|
Двойной вызов paintComponent
|
|||
|---|---|---|---|
|
#18+
А почему бы и нет? Может с layout-ом что-то. Сравните по stacktrace оба вызова. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2012, 12:03:20 |
|
||
|
Двойной вызов paintComponent
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, угу, читнем-с ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2012, 12:07:28 |
|
||
|
Двойной вызов paintComponent
|
|||
|---|---|---|---|
|
#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. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. Такой код дает двойной вызов при старте, ресайзе, но при minimize-maximize вызывается единожды. Если снять коммент, то модифицированный JPanel вообще не вызывает paintComponent, - очевидно, что его полностью закрывает JTextArea. В стектрэйсе два идентичных блока ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2013, 16:14:31 |
|
||
|
Двойной вызов paintComponent
|
|||
|---|---|---|---|
|
#18+
Зачем вам это вообще??? paint вызывается сколько угодно раз в любое удобное время. Из stacktrace видно, что события приходят из event queue в RepaintManager. А постятся они туда из разных источников. В вашем пример, как показывает дебаг, обе отрисовки прилетают от таймера, который реализует анимацию курсора в текстовом поле. Потом, вероятно, что-то где-то кешируется и глобальный repaint уже не вызывается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2013, 16:32:43 |
|
||
|
Двойной вызов paintComponent
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Дык споткнулся однажды, решил, что данное явление не есть следствие особенностей swing ... ну да раз так, то пусть будет ... Пасиба ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2013, 16:40:50 |
|
||
|
Двойной вызов paintComponent
|
|||
|---|---|---|---|
|
#18+
Хотя, нет. Не только в таймере дело. В общем надо дебажить RepaintManager, чтобы увидеть кто два раза сабмитит события. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2013, 16:42:12 |
|
||
|
Двойной вызов paintComponent
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2013, 16:43:41 |
|
||
|
Двойной вызов paintComponent
|
|||
|---|---|---|---|
|
#18+
Если дампать стэк в RepaintManager, то вот два последних стэка от событий, которые приводят к вызову paintComponent Код: 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. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. Далее почитать исходники Swing и AWT предлагаю самостоятельно по вышеуказаным классам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2013, 16:48:02 |
|
||
|
Двойной вызов paintComponent
|
|||
|---|---|---|---|
|
#18+
_usa__83_Дык споткнулся однажды На чем? На том что модель менялась в отрисовке? Так надо отображение от состояние отделять. _usa__83_, решил, что данное явление не есть следствие особенностей swing ... ну да раз так, то пусть будет ... Пасиба ... Какое явление? В чем проблема? Может Swing отрендерил два раза, и больше не париться, так как картинка не меняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2013, 16:49:16 |
|
||
|
Двойной вызов paintComponent
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Споткнулся однажды: отрисовка занимала достаточно много времени (рисовался график кусочно-линейно, - притормаживало) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2013, 17:45:42 |
|
||
|
Двойной вызов paintComponent
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Ткнулся в paintComponent оценить время и увидел двойной вызов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2013, 17:47:28 |
|
||
|
Двойной вызов paintComponent
|
|||
|---|---|---|---|
|
#18+
_usa__83_Blazkowicz, Споткнулся однажды: отрисовка занимала достаточно много времени (рисовался график кусочно-линейно, - притормаживало) Гы. Так отрисовка вообще постоянно делается. Так что это бага реализации. Нужно все расчеты выносить модель, а затем быстро-быстро рисовать модель максимально подготовленную к отрисовке. И все вычисление делать вне paint ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2013, 17:53:09 |
|
||
|
Двойной вызов paintComponent
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Э-э-э-э ... Следовал Вашей рекомендации и что-т совсем плохо стало ... http://www.cs.rit.edu/usr/local/pub/swm/jdoc6/javax/swing/RepaintManager.html ... есть описание вложенных классов http://docs.oracle.com/javase/7/docs/api/ ... а здесь нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2013, 17:05:04 |
|
||
|
Двойной вызов paintComponent
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Согласен, адрес прописал не верно, но согласитесь, что описания несколько разнятся все что приватное не описано ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2013, 17:20:21 |
|
||
|
Двойной вызов paintComponent
|
|||
|---|---|---|---|
|
#18+
_usa__83_Согласен, адрес прописал не верно, но согласитесь, что описания несколько разнятся все что приватное не описано Не могу согласиться с тем чего не доганяю. Если вы дебажить собрались, как я советовал выше, то нужно исходники подключить и их читать, а не JavaDoc. Если вы исходники читать не можете, то JavaDoc RepainManager-а вам ничем не поможет. Тогда следуйту другому совету - вычислять всё что можно заранее, а не внутри метода paint(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2013, 17:29:31 |
|
||
|
Двойной вызов paintComponent
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Немного ушли в сторону, но все же в "javaDoc" который на http://docs.oracle.com/javase/7/docs/api/javax/swing/RepaintManager.html нет описания вложенных классов (к примеру) а на http://www.cs.rit.edu/usr/local/pub/swm/jdoc6/javax/swing/RepaintManager.html есть таковые, собственно туда пошел из-за дампа, смотрел описание классов, ну а так пытаюсь осязать исходники на http://kickjava.com/src/javax/swing/RepaintManager.java.htm ... Вот собственно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2013, 17:33:43 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38424844&tid=2128422]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
148ms |
get topic data: |
89ms |
get forum data: |
2ms |
get page messages: |
80ms |
get tp. blocked users: |
1ms |
| others: | 280ms |
| total: | 634ms |

| 0 / 0 |
