如何在不为每个组件执行addChangeListener的情况下为多个组件添加一个更改监听器?

问题描述 投票:0回答:1

假设你有一个非常繁忙的对话框,需要知道除了密码字段之外,其他的项目是否有变化。在这个例子中,如果密码字段发生了变化,这并不重要,但是如果任何其他字段、单选按钮、复选框......发生了变化,我需要知道按钮何时被按下。

当然,我们可以为每一个组件(除了密码)添加一个更改监听器,但随着这个对话框的增长,我不应该担心如何为新对象添加更改监听器。

是否可以在某个层添加一个变化监听器,然后当任何组件发生变化时,它就会启动。在这个例程中,我可以添加一个IF来检查组件是否是Password,然后忽略,但如果是其他的,则标记整个对话框为改变。

enter image description here

java listener
1个回答
2
投票

你必须为每个组件添加监听器。好消息是你可以迭代父的子代,并在循环中添加监听器。

parent.getComponents().forEach(c->addChangeListener(yourListener));


1
投票

您可以使用

java.awt.Toolkit.getDefaultToolkit().addAWTEventListener(AWTEventListener)

https:/docs.oracle.comenjavajavase14docsapijava.desktopjavaawtToolkit.html#addAWTEventListener(java.awt.event.AWTEventListener,long)

© www.soinside.com 2019 - 2024. All rights reserved.