userstructure.java
来自「eclipse开发笔记」· Java 代码 · 共 82 行
JAVA
82 行
package book.ch7.tree;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
public class UserStructure {
public static final String ADD_USER = "addUser";
public static final String REMOVE_USER = "removeUser";
private User president;
public UserStructure(User president) {
this.president = president;
delegate = new PropertyChangeSupport(this);
}
public User getPresident() {
return president;
}
/**
* 在parentPath所指定的User上添加一个Underling
*/
public void add(int[] parentPath, User newUser) {
User parent = findUser(parentPath);
if (parent != null && !parent.getUnderlings().contains(newUser)) {
if (parent.getUnderlings().add(newUser)) {
newUser.setManager(parent);
firePropertyChange(new PropertyChangeEvent(this, ADD_USER,
null, new Object[] { parent, newUser }));
}
}
}
/**
* 丛树结构上移除一个由path指定的User
*/
public void remove(int[] path) {
User theUser = findUser(path);
if (theUser != null
&& theUser.getManager().getUnderlings().remove(theUser)) {
theUser.setManager(null);
firePropertyChange(new PropertyChangeEvent(this, REMOVE_USER, null,
theUser));
}
}
/**
* 在树结构中定位一个User
*/
protected User findUser(int[] path) {
try {
User current = president;
for (int i = 0; i < path.length; i++) {
current = (User) current.getUnderlings().get(path[i]);
}
return current;
} catch (ArrayIndexOutOfBoundsException e) {
return null;
}
}
private PropertyChangeSupport delegate;
public void addPropertyChangeListener(PropertyChangeListener listener) {
delegate.addPropertyChangeListener(listener);
}
public void firePropertyChange(PropertyChangeEvent evt) {
delegate.firePropertyChange(evt);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
delegate.removePropertyChangeListener(listener);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?