|
59 / 59 / 20
Регистрация: 21.03.2013
Сообщений: 186
|
||||||||||||||||
JavaFX программно выбрать запись в TableView12.10.2016, 13:39. Показов 4870. Ответов 11
Метки нет (Все метки)
Здравствуйте.
Есть проблема с программным выбором записи в TableView. Есть две вьюшки. На одной TableView, другая вьюшка для добавления записи в эту таблицу. Если сделать:
Вариант номер два. После создания item я сохраняю его в базу и полностью пересоздаю вьюшку, в ней загружается TableView, который подтягивает из базы данных item'ы. После этого надо подсветить нужный.
Т.е. получается такая ситуация, когда мы имеем один свободный объект item, имеем полную его копию в ObservableList, но они не совпадают, потому что не совпадают их хэши. И подсветить этот объект поэтому нельзя. Может кто-нибудь пояснить, почему и что с этим можно сделать?
0
|
||||||||||||||||
| 12.10.2016, 13:39 | |
|
Ответы с готовыми решениями:
11
JavaFx вставка в tableView Заполнение TableView в JavaFX Не правильный вывод в TableView javafx |
|
50 / 49 / 13
Регистрация: 23.11.2015
Сообщений: 401
|
|
| 12.10.2016, 14:04 | |
|
Virkom,
1. А вообще TableView то подсвечивает хоть что то? Может рендеринг надо переопределять как в Swing JTable? 2. А зачем тебе хэшкоды? Вроде их для быстрого предварительного сравнения используют. Может попробовать equals() переопределить под свои нужды? PS. Сам только изучаю Java, может не компетентен в этом еще.
1
|
|
|
59 / 59 / 20
Регистрация: 21.03.2013
Сообщений: 186
|
||
| 12.10.2016, 14:35 [ТС] | ||
|
2. Насколько я понимаю, поиск объекта для подсветки происходит по хэш-тегу. Потому что объекты абсолютно одинаковые. Но java считает, что нет. Различаются только хэшами. Насчет equals() не знаю, можно попробовать. Есть одна мысль, сейчас проверяю.
0
|
||
|
50 / 49 / 13
Регистрация: 23.11.2015
Сообщений: 401
|
|
| 12.10.2016, 14:42 | |
|
Virkom, все объекты сравнимы между собой, хотя бы равенство ссылок для них уже определено.
Взаимосвязь hashCode() и equals(): если по логике equals() два объекта равны, то и hashCode() у них должны быть одинаковые. hashCode() есть смысл сравнивать для быстрой проверки, если hashCode() разные, то сравнивать equals() уже смысла нет. По поводу переопределения equals(). По умолчанию любой объект имеет метод equals() наследованный от Object. Дефолтный equals() сравнивает ссылки, а не содержимое. При переопределении equals() для конкретных объектов будет сравнивать содержимое.
1
|
|
|
59 / 59 / 20
Регистрация: 21.03.2013
Сообщений: 186
|
|
| 12.10.2016, 14:50 [ТС] | |
|
Просмотрел еще раз, объекты отличаются. Связями. В каждом item'е есть ссылка на юзера, который его добавил в бд.
Юзер один и тот же в обоих item'ах, но у них опять же, разные хэши. Поэтому и хэш всего объекта считается другим. Связи подтягиваются с fetchType Lazy в Hibernate. В БД вообще один юзер. Не может быть он разным у двух объектов.
0
|
|
|
59 / 59 / 20
Регистрация: 21.03.2013
Сообщений: 186
|
||||||
| 12.10.2016, 15:15 [ТС] | ||||||
|
Вообще, что-то интересное:
0
|
||||||
|
59 / 59 / 20
Регистрация: 21.03.2013
Сообщений: 186
|
||||||
| 12.10.2016, 15:20 [ТС] | ||||||
|
Другой проект:
В этих двух проектах DAO содержат совершенно одинаковые методы, Hibernate настроен одинаково. Версия Hibernate также одна и та же. Что не так - не пойму.
0
|
||||||
|
50 / 49 / 13
Регистрация: 23.11.2015
Сообщений: 401
|
|
| 12.10.2016, 16:37 | |
|
Virkom, ого! жесть! А в чем отличие groupType от compaign у тебя? Может там собака зарыта?
1
|
|
|
59 / 59 / 20
Регистрация: 21.03.2013
Сообщений: 186
|
||||||||||||||||||||||
| 12.10.2016, 17:01 [ТС] | ||||||||||||||||||||||
|
GroupType имеет id, name, userAdded, dateAdded, userModified, dateModified. Campaign имеет также id, name, userAdded, dateAdded, userModified, dateModified. Только Campaign имеет еще парочку других полей. Получаются они совершенно одинаково из БД:
0
|
||||||||||||||||||||||
|
50 / 49 / 13
Регистрация: 23.11.2015
Сообщений: 401
|
|
| 15.10.2016, 09:56 | |
|
Virkom, не вот это случайно?
http://hibernate.org/validator... g-started/
1
|
|
|
59 / 59 / 20
Регистрация: 21.03.2013
Сообщений: 186
|
|||||||
| 16.10.2016, 16:49 [ТС] | |||||||
|
Штука в том, что два объекта из базы действительно будут разными. Для того, чтобы они были одинаковыми - нужно или переопределять equals() и hashCode() или сравнивать по ID. Почему работает на другом проекте по-другому? Потому что там как-то настроен Hibernate proxy, который второй раз вместо объекта отдает ссылку на предыдущий объект. Как это работает, я еще не разобрался, но буду разбираться. В общем варианта решения проблемы (подсветить нужную запись в таблице) два. Первый - переопределить equals() и hashCode(). Тогда конструкция
И вариант номер два - написать метод, который будет перебирать tableView.getItems() в цикле, искать элемент с нужным ID, определять его порядковый номер в списке и подсвечивать объект по номеру строки. С Hibernate proxy возиться неохота.
1
|
|||||||
|
50 / 49 / 13
Регистрация: 23.11.2015
Сообщений: 401
|
|
| 19.10.2016, 08:09 | |
|
Virkom, спасибо за лик без, буду тоже знать теперь. Про переопределение equals и hashCode я кстати писал выше.. но все такие ситуация до конца не была понятна, что именно там происходит.
0
|
|
| 19.10.2016, 08:09 | |
|
Помогаю со студенческими работами здесь
12
Некорректный вывод в TableView (javafx) Динамическое заполнение TableView в JavaFX Не отображаются данные в Tableview JavaFX Отображение данных в TableView JavaFX JavaFX. Как заполнить TableView из файла? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|