Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Топ:
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов...
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Интересное:
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Национальное богатство страны и его составляющие: для оценки элементов национального богатства используются...
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Дисциплины:
2022-10-10 | 70 |
5.00
из
|
Заказать работу |
|
|
Ответ: Это будет не копия, а просто обертка.
Так, давайте, чтобы нам ничего не мешало, я подписку на изменения выкину. И обратно верну на верх изменения списка. Хотя это непринципиально.
Итак, было два элемента. Потом сделал обертку и в исходную коллекцию добавляю данные. Пока в эту не добавляю.
Вот смотрите.
run: == 7 2 2 3 3 4 7 2 2 3 3 4 СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 0 секунд) |
Видите? Данные одинаковы. Это же одна коллекция. Это одна обертка.
А теперь я и в observableдобавляю данные – в olist.
run: == 7 2 2 3 3 4 7 9 7 2 2 3 3 4 7 9 СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 0 секунд) |
Две печатаются – в listи olist. А ничего не должно меняться. Это одна коллекция. Вы с ней можете работать что по имени list (это обертка, она все-равно в курсе всех изменений), что по имени olist (это тоже самое – через обертку).
Это удобно. Рассинхронизации у нас не происходит. Данные одни. А вот теперь я подписываюсь на изменения и пытаюсь посмотреть. Меняю listи меняю olist. В общем два изменения. Сколько увидим invalidate?
run: == invalidate! 7 2 2 3 3 4 7 9 7 2 2 3 3 4 7 9 СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 0 секунд) |
Почему одно? Да потому что если вот это закомментировать
и запустить, то у listкак не было возможности сообщать об изменении, так и нет. А получается, что когда мы в нее добавляем эту коллекцию то… мы же добавляем не через обертку и получается, что обертка не в курсе, что произошли изменения. Если бы через нее прошел вызов, она сказала бы: «А!».
Вот эту строчку я убираю
и буду через обертку добавлять.
Вот если так через обертку работает. Коллекция-то одна. Какая мне разница? Я могу, что так работать с коллекцией, что через обертку. Но в плане коллекций все будет тоже самое. Она сообщает не только??????вариант. Потому что «add»обертки – он как раз в себе этот функционал и поддерживает. Он говорит: «изменилось».
|
run: == invalidate! 7 2 2 3 7 9 7 2 2 3 7 9 СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 0 секунд) |
Вопрос: Почему сделали оба варианта?
Ответ: А нет идеального варианта. А смысл, например, делать копию? Я говорю: «мне не нужна копия». Ну правильно. Тогда не делай, но если ты копию не сделаешь, то тогда ты можешь ошибиться воспользоваться старым вариантом коллекции и не увидишь изменений. А здесь ты сделал копию – это старая коллекция – никаких событий. А там как бы обертка… Но в общем не знаю. Они думали наверно и решили оставить два варианта.
Вам уже самим разбираться. Но с коллекциями мы еще поработаем.
События JavaFX
Но самое для нас сейчас интересное – это как в JavaFXобрабатываются события.
Они выстроили события в иерархию. Есть такие интерфейсы, которые мы видели в Swingи подписывались на события в Swingс помощью интерфейсов. Давайте посмотрим следующие в JavaFX:
· javafx.scene.input.ContextMenuEvent
· javafx.scene.input.DragEvent
· javafx.scene.input.GestureEvent
Видите? Это совсем другая история. Это классы, а не интерфейсы. Здесь получается, что для того чтобы могли обрабатываться события – у нас иерархия классов. Здесь они ушли от интерфейсов. Т.е. все события выстроились в иерархию. В Swingтакого не было.
|
|
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!