Java 侦听WritableList中的更改
数据模型类 创建IObservableListJava 侦听WritableList中的更改,java,swt,listener,Java,Swt,Listener,数据模型类 创建IObservableList IObservableList observableList=新的可写列表() Add方法将数据添加到observableList 方法返回observableList 表查看器类 将内容提供程序设置为ObservableListContentProvider GUI类 查看器setInput从数据模型类获取ObservableList 一切似乎都按预期工作,表查看器会随着对ObservableList的更改而更新 但是我遇到的问题是如何更新GUI
public void handleListChange(ListChangeEvent arg0) {
updateButtons(); <-- My method to run the logic
这是我唯一的选择
addSelectionChangedListener(ISelectionChangeListener listener)
我不在乎选择是否更改-仅当列表已更改时才如此。我已尝试过此示例,它对我有效:
IObservableList observableList = new WritableList();
observableList.addListChangeListener(new IListChangeListener() {
@Override
public void handleListChange(ListChangeEvent event) {
System.out.println(event.diff);
}
});
observableList.add("element");
observableList.add("element");
observableList.add("element");
TableViewer viewer = new TableViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL);
viewer.getTable().setHeaderVisible(true);
viewer.getTable().setHeaderVisible(true);
viewer.setContentProvider(new ObservableListContentProvider());
TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
column.getColumn().setText("Column");
column.getColumn().setWidth(200);
column.setLabelProvider(new ColumnLabelProvider());
// Provide the input to the ContentProvider
viewer.setInput(observableList);
现在,当应用程序启动时,IListChangeListener会被调用三次,然后每次我向observableList添加一个元素。是的,实现IListChangeListener是正确的方法。updateButtons()在做什么?@Behnil检查列表以确保列表中至少有一个对象-如果没有,我禁用所有按钮,如果有,我启用按钮。另请参见上面的编辑ISelectionChangeListener有什么问题?在这里发布updateButtons()内容。@Behnil我可能会看到问题,让我看看test@Behnil从未调用handleListChange方法(ListChangeEvent arg0)。这是因为我没有向表查看器添加侦听器吗?
IObservableList observableList = new WritableList();
observableList.addListChangeListener(new IListChangeListener() {
@Override
public void handleListChange(ListChangeEvent event) {
System.out.println(event.diff);
}
});
observableList.add("element");
observableList.add("element");
observableList.add("element");
TableViewer viewer = new TableViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL);
viewer.getTable().setHeaderVisible(true);
viewer.getTable().setHeaderVisible(true);
viewer.setContentProvider(new ObservableListContentProvider());
TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
column.getColumn().setText("Column");
column.getColumn().setWidth(200);
column.setLabelProvider(new ColumnLabelProvider());
// Provide the input to the ContentProvider
viewer.setInput(observableList);