我尝试使用NatTableExamples-1.4.0并尝试将ShowRowInViewportCommand
与_900_test\viewportSelection\ViewportSelectionHideShowDataLayerExample
一起使用。
我存储了从nattable
方法和createExampleControl
方法获得的overloaded 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行被选中了。
但我没有在UI中看到ShowRowInViewportCommand
的效果。我原以为应该自动看到第36行。
ShowRowInViewportCommandHandler
已到位。在调试过程中,我确认控件已达到ShowRowInViewportCommandHandler.doCommand方法。
我该怎么做才能看到自动滚动?
答案 0 :(得分:0)
您的方法存在时间问题。您想要显示某些内容并滚动到尚未呈现的位置。如何在未渲染的内容上执行滚动操作? Shell
已打开 AFTER 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
会自动将所选行移动到视口中。