检测表单控件中的所有更改(由用户进行)

Dav*_*vid 5 java swing controls event-handling

我有一个带Save()方法的程序,它保存表单上的微调器和文本字段中的所有数据.每次用户对文本字段或微调器进行更改时,有没有办法调用"Save()"?类似于通用事件处理程序的东西.

谢谢

Wal*_*inz 3

您可以将ChangeListener的单个实例连接到所有控件,这可能看起来像(当是内部类时):

private class ListenerImpl implements ChangeListener {
   public void stateChanged(ChangeEvent e) { save(); }
}
Run Code Online (Sandbox Code Playgroud)

要一次性添加此侦听器,您可以Container像这样循环遍历您的子侦听器:

final ListenerImpl l = new ListenerImpl();
for (Component c : getComponents()) {
   if (c instanceof JSpinner) {
      ((JSpinner)c).addChangeListener(l);
   } else if (c instanceof JTextPane ) { } // ... other types of components
}
Run Code Online (Sandbox Code Playgroud)

您必须寻找不同类型的组件,因为没有定义该addChangeListener(..)方法的接口(据我所知)。