public PreferencesModel(Preferences preferencesRoot, int numberOfIpsToStore) {
			_preferencesRoot = preferencesRoot;
			_numberOfIpsToStore = numberOfIpsToStore;
			// gibt es Einträge in den Preferences zu IP und Port ? Wenn nein -> Default-Werte localhost:8083
			try {
				String[] children = _preferencesRoot.childrenNames();
				if(children.length > 0) { // es gibt abgespeicherte Werte
					Preferences lastUsedNode = _preferencesRoot.node(children[0]); // zuletzt abgespeicherter Wert
					_selectedIp = lastUsedNode.get("ip", "localhost");
					_selectedPort = lastUsedNode.get("port", "8083");
					synchronized(_ipList) {
						for(int i = 0; i < children.length; i++) {
							String child = children[i];
							Preferences childPrefs = _preferencesRoot.node(child);
							String ip = childPrefs.get("ip", null);
							if(ip != null && !_ipList.contains(ip)) _ipList.add(ip);
						}
					}
				}
			}
			catch(BackingStoreException ex) {
				ex.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
			}
			
			/**
			 * Falls sich etwas an den Knoten ändert, muss die Liste ggf. auch geändert werden.
			 */
			_preferencesRoot.addNodeChangeListener(new NodeChangeListener() {
				public void childAdded(NodeChangeEvent evt) {
					actualizeIpList();
				}
				
				public void childRemoved(NodeChangeEvent evt) {
					actualizeIpList();
				}
				
				public void actualizeIpList() {
					try {
						synchronized(_ipList) {
							_ipList.clear();
							String[] children = _preferencesRoot.childrenNames();
							for(int i = 0; i < children.length; i++) {
								String child = children[i];
								Preferences childPrefs = _preferencesRoot.node(child);
								String ip = childPrefs.get("ip", null);
								if(ip != null && !_ipList.contains(ip)) _ipList.add(ip);
							}
						}
					}
					catch(BackingStoreException ex) {
						_debug.warning("Die Liste mit den IP-Adressen konnte nicht aktualisiert werden", ex);
					}
				}
			});
		}