0

我正在尝试使用 NatTableExamples-1.4.0 并尝试ShowRowInViewportCommand使用_900_test\viewportSelection\ViewportSelectionHideShowDataLayerExample.

我把method和methodnattable得到的对象存储如下:createExampleControloverloaded onStart()

@Override
public void onStart() {
        nattable.doCommand(new ShowRowInViewportCommand(nattable.getLayer(), 35));    //didn't work
        nattable.doCommand(new SelectRowsCommand(nattable.getLayer(), 0, 35, false, false)); //worked, can see the row selected after scrolling down
    }

在这里SelectRowsCommand工作。我看到第 36 行由于索引位置转换而被选中,.

但是我没有看到ShowRowInViewportCommand在 UI 中的效果。我期待应该自动看到第 36 行。

ShowRowInViewportCommandHandler到位。在调试过程中,我验证了控件到达了 ShowRowInViewportCommandHandler.doCommand 方法。

我应该怎么做才能看到自动滚动?

4

1 回答 1

0

您的方法存在时间问题。你想让一些东西可见并滚动到那个甚至还没有被渲染的位置。应该如何在未渲染的东西上执行滚动?之后Shell打开。_ onStart()

要在启动时执行自动滚动,您需要实现一个在渲染完成后执行的侦听器,例如通过使用PaintListener.

this.nattable.addPaintListener(new PaintListener() {

    @Override
    public void paintControl(PaintEvent e) {
        nattable.doCommand(new SelectRowsCommand(nattable, 0, 35, false, false));
        nattable.removePaintListener(this);
    }
});

顺便说一句,您甚至不需要执行,ShowRowInViewportCommand因为会SelectRowsCommand自动将选定的行移动到视口中。

于 2016-06-30T07:46:25.200 回答