我的RCP项目中有几个观点。
在一个视图中,我有TableViewer
。
在另一个视图中,我有JFrame
Button
。
我想在另一个视图中按下按钮时使用TableViewer
方法更新setInput()
中的数据。
我该怎么做?
编辑:
表格查看器的初始输入:
tableViewer.setContentProvider(ArrayContentProvider.getInstance());
tableViewer.setLabelProvider(new TableLabelProvider() );
tableViewer.setInput(TraceData.getTraceData()); // get realtime data
我将监听器添加到tableViewer以监听GUI中的更改
listener = new ISelectionListener() {
public void selectionChanged(IWorkbenchPart part, ISelection sel) {
if (!(sel instanceof IStructuredSelection))
return;
IStructuredSelection ss = (IStructuredSelection) sel;
Object o = ss.getFirstElement();
if (o instanceof Book) // something else in place of Book
tableViewer.setInput(TraceData.getSavedTraceData());
}
};
getSite().getPage().addSelectionListener(listener);
问题是如何让它对另一个视图中的按钮事件做出反应?这就是如何播放JButton
新闻事件,然后在TreeViewer
中听取该事件。
答案 0 :(得分:1)
在我的RCP应用程序中,我有一个由所有其他人扩展的View类。在这个视图中我有:
abstract void refresh();
现在,您必须使用TableViewer的视图的refresh方法。
@Override
public void refresh() {
tableViewer.setInput(...);
tableViewer.refresh();
}
您必须从按钮
调用刷新方法如何从另一个人访问视图。
final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
final IWorkbenchPage page = window.getActivePage();
try {
if (page.getActivePart() != null) {
viewTitle = page.getActivePart().getTitle();
IViewPart view = page.showView(MainView.ID) //id de la view in plugin.xml
page.hideView(page.findView(SitesView.ID));
}