gpt4 book ai didi

java - Eclipse RCP : TableViewer setInput from another view

转载 作者:行者123 更新时间:2023-12-01 12:22:14 27 4
gpt4 key购买 nike

我对我的 RCP 项目有几个看法。

在一个 View 中,我有一个 TableViewer

在另一个 View 中,我有一个带有 ButtonJFrame

当我在另一个 View 中按下按钮时,我想使用 setInput() 方法更新 TableViewer 中的数据。

我该怎么做?

编辑:

表查看器的初始输入:

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);

问题是如何让它对另一个 View 中的按钮事件使用react?这就是如何广播 JButton 按下事件,然后在此 TreeViewer 中监听该事件。

最佳答案

在我的 RCP 应用程序中,我有一个由所有其他类扩展的 View 类。在这个 View 中我有:

abstract void refresh();

现在,您必须通过 TableViewer 使用 View 的刷新方法。

@Override
public void refresh() {
tableViewer.setInput(...);
tableViewer.refresh();
}

并且您必须从按钮调用刷新方法

如何访问其他人的 View 。

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));
}

关于java - Eclipse RCP : TableViewer setInput from another view,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26593750/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com