我尝试使用NatTableExamples-1.4.0,并试图将ShowRowInViewportCommand与_900_test\viewportSelection\ViewportSelectionHideShowDataLayerExample结合使用。
我将从createExampleControl方法和overloaded onStart()方法获得的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行由于索引位置转换而被选中。
但我没有看到ShowRowInViewportCommand在UI中的作用。我原以为第36行会自动出现。
ShowRowInViewportCommandHandler就位了。在调试过程中,我验证了该控件是否达到了ShowRowInViewportCommandHandler.doCommand方法。
我该怎么做才能看到自动滚动?
发布于 2016-06-30 07:46:25
你的方法有时间问题。您想要使某些东西可见并滚动到尚未呈现的位置。如何对未呈现的内容执行滚动操作?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会自动将选定的行移动到视图端口。
https://stackoverflow.com/questions/38092811
复制相似问题