java添加数据刷新表格_java-SWT表,TableViewer,刷新数据更改表

这篇博客探讨了在Java SWT中如何在TableViewer中动态刷新数据的问题。作者遇到的挑战是,当用户在主GUI中选择新数据并添加到ArrayList后,对话框中的表不会自动更新。解决方案是实现一个`updateTableViewer()`方法,在添加数据后调用此方法以刷新表视图。

我急需一些指导协助.我已经能够遍历并获得Tables和TableViewers的代码示例.但是我没有找到任何可以帮助我进行粒子设置的示例.

请指引我正确的方向.

我的课程:

AHandler.java-这允许用户从鼠标右键单击中选择数据.在执行期间,我正在调用单例类,以将用户选择的数据添加到arraylist.

ASelectedData.getInstance().add(tcRevision, selectedDataset);

ASelectedData.java-是单例类,将用户选择添加到ArrayList中.

ABase.java-打开此对话框,单击菜单.该对话框应显示一个包含ArrayList中的值的表.一些执行其他操作的按钮.

我现在拥有的方式是在ABase.java类中创建表和tableviewer.我正在从表中获取信息.

viewer.setContentProvider(new ArrayContentProvider());

viewer.setInput(AplotSelectedDataTable.getInstance().getArrayData());

这将使用正确的数据填充表.

但是ABase.java类是MODELESS.因此,为什么打开该对话框,用户可以继续使用鼠标右键选择数据并将其添加到arraylist中.但是我将表编码的方式必须重新打开窗口以更新数据.

*编辑****

在我的主GUI中,我创建了一个TableViewer. TableViewer创建一个表,该表在单独的类中显示来自arraylist的数据.问题是用户仍然可以在我的GUI仍处于打开状态时转到主应用程序GUI(而不是我的应用程序GUI)并选择更多数据.他们希望看到选择新数据后将其添加到表中.

问题是我不知道告诉表新数据已经到来,所以请刷新表.用于将数据添加到ArrayList的Add方法位于ASelectedData类中.不是创建tableviewer的类.

当执行Add方法时,我需要一种方法来告诉表刷新.问题在于表和方法位于两个单独的类中.

希望这更有意义

编辑*

我的主要GUI与TableViewer

public AplotBaseDialog(Shell shell, TCSession theSession) Constructor

//////////////////////////////////////////////////////////////////////////

// createTableViewer() //

//////////////////////////////////////////////////////////////////////////

private TableViewer createTableViewer(Composite parent) {

viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);

createColumns(parent, viewer);

Table table = viewer.getTable();

table.setHeaderVisible(true);

table.setLinesVisible(true);

viewer.setContentProvider(new ArrayContentProvider());

viewer.setInput(AplotSelectedDataTable.getInstance().getArrayData());

// Layout the viewer

GridData gridData = new GridData();

gridData.verticalAlignment = GridData.FILL;

gridData.horizontalSpan = 2;

gridData.grabExcessHorizontalSpace = true;

gridData.grabExcessVerticalSpace = true;

gridData.horizontalAlignment = GridData.FILL;

viewer.getControl().setLayoutData(gridData);

return viewer;

}

//////////////////////////////////////////////////////////////////////////

// updateTableViewer() //

//////////////////////////////////////////////////////////////////////////

public void updateTableViewer() {

viewer.refresh();

}

将代码添加到其他类

AplotBaseDialog abd = new AplotBaseDialog(null, null);

public void add(TCComponentItemRevision tcRevision, TCComponentDataset selectedDataset) {

AplotDatasetData pp = new AplotDatasetData(tcRevision, selectedDataset);

if (!dataArrayList.contains(pp)) {

dataArrayList.add(pp);

}

abd.updateTableViewer();

}// end add()

解决方法:

尽管您的问题尚未完成,但我将尝试猜测您的问题:

您在对话框中有一个TableViewer,并且可以从主GUI编辑ModelProvider.现在,当您向模型中添加某些内容时,您想知道如何更新表,对吗?

如果是这样,您可以在对话框中提供一种方法,该方法可以更新对话框中的TableViewer.像这样:

public void updateTableViewer()

{

if(viewer != null)

viewer.refresh();

}

当您向ModelProvider添加内容时,可以从主gui调用此方法.

如果这不是您的问题,请更新您的原始帖子.

标签:swt,java

来源: https://codeday.me/bug/20191127/2076406.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值