powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JavaFX: Как отловить нажатие на элементе в списке ChoiceBox?
14 сообщений из 14, страница 1 из 1
JavaFX: Как отловить нажатие на элементе в списке ChoiceBox?
    #39360409
RuslanGab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте уважвемые форумчане!
Помогите пожалуйста если кто в курсе: никак не соображу как отловить нажатие на одном из элементов в ChoiceBox. Есть ActionListner - работает как положено. Проблема в том что при нажатии на один из элементов нужно ВСЕГДА выполнять определенное действие. С листнером это работает только если перед этим был выбран другой элемент, но если этот же (скажем "ДЕЙСТВИЕ") уже выбран и нажать по нему еще раз - ничего (и это логично).
Мои неудачные попытки:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
        dateIntervalsBox.setOnHiding((Event event) -> {
              System.out.println("111");
        });
        dateIntervalsBox.onHiddenProperty().set((EventHandler<Event>) (Event event) -> {
              System.out.println("222");
        });
        EventHandler eh = (EventHandler<MouseEvent>) (MouseEvent event) -> {
              System.out.println("Action performed on checkbox ");
        };
        dateIntervalsBox.setOnMousePressed(eh);


Последний срабатывает когда я нажимаю непосредственно на ChoiceBox, а не на каком-либо элементе из выпадающего списка, что мне необходимо получить (причем не только для мыши конечно). Остальные два не срабатывают вообще:( "Банальный" setOnAction работает только на изменении выбранного эдемента как SelectionListner.
Итак, может ли кто-либо подсказать как отловить нажатие на элементе из списка ChoiceBox?
Спасибо!
...
Рейтинг: 0 / 0
JavaFX: Как отловить нажатие на элементе в списке ChoiceBox?
    #39360417
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RuslanGab,
Собыие клик мышкой?
...
Рейтинг: 0 / 0
JavaFX: Как отловить нажатие на элементе в списке ChoiceBox?
    #39360447
RuslanGab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

То что я попытался реализовать тут:
[SRC java][/SRC]dateIntervalsBox.setOnMousePressed(eh);
Срабатывает только с нажатием не сам ChoiceBox. Дальнейшее нажатие на какой-либо из элементов списка уже не отлавливается! Повесить событие нажатия на ObservableList (то бишь сами объекты в боксе) я тоже не могу :(
...
Рейтинг: 0 / 0
JavaFX: Как отловить нажатие на элементе в списке ChoiceBox?
    #39360454
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javaFX не знаю, но вам надо гуглить что-то типа

javafx ChoiceBox listener
или
javafx choicebox changelistener

в теории: надо ловить event в этом листенере и у него брать какое-то проперти и его значение, а дальше уже вызывать то что должно произойти при выборе того или иного элемента
...
Рейтинг: 0 / 0
JavaFX: Как отловить нажатие на элементе в списке ChoiceBox?
    #39360459
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А понял, вам надо еще раз вызывать метод, который вызывается при выборе "нового" элемента.
Я это сделал у себя так, что есть отдельная кнопка, которая смотрит выбранный элемент в списке и выполняет те же действия, что и выбор "нового" элемента списка.
В общем, я не знаю, как вам помочь)))
...
Рейтинг: 0 / 0
JavaFX: Как отловить нажатие на элементе в списке ChoiceBox?
    #39360467
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RuslanGab,
т.е. тебе надо, если выбрали ФИО твоего шефа, то сказать "ку".
Даже если его не выбрали(смены не было), а просто кликнули?
....
Изврат?
...
Рейтинг: 0 / 0
JavaFX: Как отловить нажатие на элементе в списке ChoiceBox?
    #39360468
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123RuslanGab,
т.е. тебе надо, если выбрали ФИО твоего шефа, то сказать "ку".
Даже если его не выбрали(смены не было), а просто кликнули?
....
Изврат?
По отдельности - можно.
А оба пункта сразу - изврат, и даже мозги не хотят думать.
))
...
Рейтинг: 0 / 0
JavaFX: Как отловить нажатие на элементе в списке ChoiceBox?
    #39360473
RuslanGab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nixic,

NixicА понял, вам надо еще раз вызывать метод, который вызывается при выборе "нового" элемента.

Да!

авторвам надо гуглить что-то типа

javafx ChoiceBox listener
или
javafx choicebox changelistener

Сделал еще до публикации вопроса.

Единственное что как-то способно работать - это по клику мышкой на сам бокс (т.е. до выбора самого элемента) чистить его selectionModel. Тогда что бы пользователь не выбрал (если на другом элементе не сфокусируется) это будет "новый" выбор. НО я не хочу делать ВСЕ действия еще раз и, что еще хуже, у меня с этим ГУИ завязаны, так что конкретно в моем случае отпадает. Блин, но ведь есть событие - он его читает и решает новый элемент выбран или нет. Потом уже если новый то он говорит мол "да есть изменение". Вот это первое событие блин найти бы... Попробую подебажить. Cтранно что "setOnHiding" не срабатывают - по моей логике должны...
...
Рейтинг: 0 / 0
JavaFX: Как отловить нажатие на элементе в списке ChoiceBox?
    #39360477
RuslanGab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

авторт.е. тебе надо, если выбрали ФИО твоего шефа, то сказать "ку".
Даже если его не выбрали(смены не было), а просто кликнули?
....
Изврат?

Да!
Только изврата я не вижу особого: у меня там выбирается интервал дат для отчета и есть "кастомный", при нажатии на которого всплывает окно где задается "с" и "по". Вот и надо если на него еще раз нажимают опять это окно показать. Сейчас для этого надо сначала выбрать другой интервал а потом опять кастомный нажать - вообще не комильфо:(
...
Рейтинг: 0 / 0
JavaFX: Как отловить нажатие на элементе в списке ChoiceBox?
    #39360480
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RuslanGabТолько изврата я не вижу особого: у меня там выбирается интервал дат для отчета и есть "кастомный", при нажатии на которого всплывает окно где задается "с" и "по". Вот и надо если на него еще раз нажимают опять это окно показать. Сейчас для этого надо сначала выбрать другой интервал а потом опять кастомный нажать - вообще не комильфо:(
ищи другое решение.
Не понял, почему нельзя при первом выборе "Начальник" показать окно с ПодВыборомПараметра и потом его запомнить и менять, например при зажатой клавише Shift при клике (как в фотошоп)
...
Рейтинг: 0 / 0
JavaFX: Как отловить нажатие на элементе в списке ChoiceBox?
    #39360481
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Второй вариант - при выборе отчёта - показывать для каждого не всплывающее, а сворачиваемое окно НА самом окне где это список отчётов.
...
Рейтинг: 0 / 0
JavaFX: Как отловить нажатие на элементе в списке ChoiceBox?
    #39360504
RuslanGab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Да. Можно наверное переделывать, но я как истинный ленивец решил проще сделать:
1. Вешаем событие "по клику" на весь бокс.
dateIntervalsBox.setOnMousePressed(eh);
2. Когда на бокс кликают то ЕЖЕЛИ там как раз выбран нужный элемент чистим выбор. Выходит что бы мы не выбрали он "думает" что перед этим ничего не было и срабатывает ChangeListner. Собственно это именно то что надо. Если прыгать между другими объектами "все по-старому" а в случае "НАЧАЛЬНИК" он всегда сделает свою работу. Даже в случае потери фокуса (пользователь "ушел" на другой объект) это совершенно нормально что в боксе ничего получается не выбрано КАК РАЗ именно в том случае если до того был выбран "НАЧАЛЬНИК". Как-то так. Вроде работает, хотя суда по названию "onHiding" должен был бы срабатывать когда список сворачивается (что-то выбрано) и я так и не понимаю отчего сие не так...
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
        EventHandler eh = (EventHandler<MouseEvent>) (MouseEvent event) -> {
            System.out.println("!: " + dateIntervalsBox.getSelectionModel().selectedItemProperty().get());
            if (!dateIntervalsBox.getSelectionModel().isEmpty() && 
                    dateIntervalsBox.getSelectionModel().selectedItemProperty().get().equals(
                            enumStrings.getValForDateEnumWithResources(EnumDateIntervals.UserDefined.toString()))) {
                dateIntervalsBox.getSelectionModel().clearSelection();
            }
        };


3. Осталось работу с клавиатурой к этому прикрутить, но тут я таких сложностей не предвижу.

Всем большое спасибо!
...
Рейтинг: 0 / 0
JavaFX: Как отловить нажатие на элементе в списке ChoiceBox?
    #39360512
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Везет :) - есть на dateIntervalsBox листенер, который щелчки видит, в Vaadin вот такого нет на PopupDateField.
А мне бы хотелось двойной клик отслеживать и выставлять при этом элементу текущую дату.
...
Рейтинг: 0 / 0
JavaFX: Как отловить нажатие на элементе в списке ChoiceBox?
    #39360519
RuslanGab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nixic,

Ну как везет... Я бы вот с VAADIN c удовольствием поработал, а то эти приложения для рабочего стола почти никому сегодня не нужны, а я все сплошь ими и занимаюсь - в вэбе и опыта толком никак не наберешь:( Так что не то чтоб очень везет
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JavaFX: Как отловить нажатие на элементе в списке ChoiceBox?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]