假设你有一个非常繁忙的对话框,需要知道除了密码字段之外,其他的项目是否有变化。在这个例子中,如果密码字段发生了变化,这并不重要,但是如果任何其他字段、单选按钮、复选框......发生了变化,我需要知道按钮何时被按下。
当然,我们可以为每一个组件(除了密码)添加一个更改监听器,但随着这个对话框的增长,我不应该担心如何为新对象添加更改监听器。
是否可以在某个层添加一个变化监听器,然后当任何组件发生变化时,它就会启动。在这个例程中,我可以添加一个IF来检查组件是否是Password,然后忽略,但如果是其他的,则标记整个对话框为改变。
你必须为每个组件添加监听器。好消息是你可以迭代父的子代,并在循环中添加监听器。
parent.getComponents().forEach(c->addChangeListener(yourListener));
您可以使用
java.awt.Toolkit.getDefaultToolkit().addAWTEventListener(AWTEventListener)