|
|
|
Swing: как передавать событие между несвязанными компонентами?
|
|||
|---|---|---|---|
|
#18+
Вот накидал маленький пример приложения с кастомным событием. Создается JPanel, на которое помещается наследник JComponent, "кирпичик" зеленого цвета, умеющий обрабатывать собития и "двигаться" на экране в пределах своего контейнера. Класс события: Код: 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. Слушатель (тут на самом деле ничего интересного) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. "Таскаемый" компонент. Код: 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. Главный класс приложения Код: 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. Однако здесь событие обрабатывается в том же компоненте, где и возникает. Действительно, ведь поле listenerList, куда добавляются слушатели, принадлежит компоненту. А как быть, если нужно передать событие в несвязанный объект? Допустим, добавляем на панель некий статусбар, в котором будем показывать текущие координаты нашего двигаемого зеленого кирпичика. Как его сделать подписчиком событий MoveBarEvent? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 14:21 |
|
||
|
Swing: как передавать событие между несвязанными компонентами?
|
|||
|---|---|---|---|
|
#18+
mesier, Выкинь Swing и возьми JavaFX. Там через биндинг свойств это элементарно делать. А в Swing тебе нужно следовать JavaBeans - реализовать PropertyChangeListener и PropertyChangeSupport, подписать слушателя и кидать PropertyChangeEvent. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 14:23 |
|
||
|
Swing: как передавать событие между несвязанными компонентами?
|
|||
|---|---|---|---|
|
#18+
JavaBeans не обязательно, достаточно использовать Observable/Observer, просто в JavaFX все эти внутренности спрятаны в биндинг. http://www.javaquizplayer.com/blogposts/blogpost7.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 09:59 |
|
||
|
Swing: как передавать событие между несвязанными компонентами?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz Выкинь Swing и возьми JavaFX. Что еще прикажешь выкинуть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 11:45 |
|
||
|
Swing: как передавать событие между несвязанными компонентами?
|
|||
|---|---|---|---|
|
#18+
AlexJmBlazkowicz Выкинь Swing и возьми JavaFX. Что еще прикажешь выкинуть? Мне тоже непонятно что такое "биндинг свойств". Это опция языка, платформы или "ватрушка" в среде разработки? Вобщем нужно прояснение чем это ЖаваФХ так немерянно крут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 12:22 |
|
||
|
Swing: как передавать событие между несвязанными компонентами?
|
|||
|---|---|---|---|
|
#18+
JavaFX - это Swing 2.0, может так будет понятней )), этим он и крут ). Про биндинг можно прочитать любую статью и сразу станет понятно для чего, что и как. Просто пересказывать это чета не хочется. Сейчас пишу небольшой проект на JavaFX - таблички, формочки, менюшки - полет нормальный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 13:06 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38732387&tid=2126676]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
199ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 247ms |
| total: | 569ms |

| 0 / 0 |
