添加事件侦听器

Preferences 对象发出两种类型的事件 : PreferenceChangeEventNodeChangeEvent

PreferenceChangeEvent

每当节点的一个键值对发生变化时,PreferenceChangeEvent 就会被 Properties 对象发出。PreferenceChangeEvents 可听了一个 PreferenceChangeListener

Version >= Java SE 8

preferences.addPreferenceChangeListener(evt -> {
    String newValue = evt.getNewValue();
    String changedPreferenceKey = evt.getKey();
    Preferences changedNode = evt.getNode();
});

Version < Java SE 8

preferences.addPreferenceChangeListener(new PreferenceChangeListener() {
    @Override
    public void preferenceChange(PreferenceChangeEvent evt) {
        String newValue = evt.getNewValue();
        String changedPreferenceKey = evt.getKey();
        Preferences changedNode = evt.getNode();
    }
});

此侦听器不会侦听已更改的子节点键值对。

NodeChangeEvent

只要添加或删除了 Properties 节点的子节点,就会触发此事件。

preferences.addNodeChangeListener(new NodeChangeListener() {
    @Override
    public void childAdded(NodeChangeEvent evt) {
        Preferences addedChild = evt.getChild();
        Preferences parentOfAddedChild = evt.getParent();
    }

    @Override
    public void childRemoved(NodeChangeEvent evt) {
        Preferences removedChild = evt.getChild();
        Preferences parentOfRemovedChild = evt.getParent();
    }
});