我有小的 Job 和 JobManager 域类:
public class Job extends ModelObject {
private String name;
private String state;
public State getState() {return state;}
public void setState(final State state) {this.state = state;}
public String getName() {return name;}
public void setName(String name) {this.name = name;}
}
public class JobManager extends ModelObject {
private List<Job> jobs = new ArrayList<Job>();
public List<Job> getJobs() {
return jobs;
}
public void addJob(Job job) {
jobs.add(job);
firePropertyChange("jobs", null, null);
}
public void removeJob(Job job) {
jobs.remove(job);
firePropertyChange("jobs", null, null);
}
}
然后我使用 JFace 数据绑定来更新 TableViewer。
... // TableViewer tableViewer;
... // JobManager jobManager;
IObservableList jobs = BeanProperties.list(JobManager.class, "jobs").observe(jobManager);
tableViewer.setContentProvider(new ObservableListContentProvider());
... // set label provider etc
tableViewer.setInput(jobs);
这工作正常。当我将作业添加到作业管理器时 - jobManager.add(job) 新行出现在表格视图中。当我从作业管理器中删除作业时 - jobManager.remove(job) 相应的行将从表视图中删除。
但我也想在工作状态从“state1”更改为“state2”时更新表视图 - job.setState("state2"); 我怎样才能做到这一点?