0

小さな 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"); どうやってやるの?

4

1 に答える 1