Можем ли мы сказать, действительно ли мышь щелкала по флажку в Java? - PullRequest
1 голос
/ 09 февраля 2011

Вот сценарий.У меня есть свинг-апплет с множеством флажков.некоторые из них отключены / не отмечены при проверке другого.Каждое событие ItemStateChange() выполняет метод для анализа всей формы на наличие изменений.Есть ли способ узнать, было ли событие ItemStateChange() вызвано щелчком мыши или вызовом setSelected()?

ItemStateChange() для каждого флажка имеет стандартный параметр java.awt.event.ItemEvent evt

Я бы хотел вызывать метод processOrder () только один раз при щелчке окна.Прямо сейчас он срабатывает для каждого внесенного изменения, независимо от того, произошло ли изменение с setSelected().Иногда от одного клика доходит 10+ parseForm(); звонков.

Ответы [ 3 ]

1 голос
/ 09 февраля 2011

Есть ли способ узнать, было ли событие ItemStateChange () вызвано щелчком мыши или вызовом setSelected ()?

Если приложение вручную вызывает setSelected (), то вы можете использовать код как:

checkBox.removeItemListener(...);
checkBox.setSelected(...);
checkBox.addItemListener(...);
1 голос
/ 10 февраля 2011

Если вы можете изменить использование MouseListener вместо ItemListener и ответить на событие mouseClicked (), вы получите только события для флажка, выбранного пользователем.

1 голос
/ 09 февраля 2011

Вы не можете определить, является ли источник события щелчком мыши или вызовом setSelected из ItemEvent.

Звучит так, будто у вас в логике флажка есть петля.Возможно, вы захотите добавить контроллер, который обрабатывает события и устанавливает каждый флажок, но игнорирует события, возникающие из-за вызова setSelected для других флажков.

...