使用 NatTable 的 ShowRowInViewportCommand
Using NatTable's ShowRowInViewportCommand
我尝试使用 NatTableExamples-1.4.0 并尝试将 ShowRowInViewportCommand
与 _900_test\viewportSelection\ViewportSelectionHideShowDataLayerExample
一起使用。
我将从createExampleControl
方法和overloaded onStart()
方法获得的nattable
对象存储如下:
@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 方法。
我应该怎么做才能看到自动滚动?
您的方法存在时间问题。你想让一些东西可见并滚动到那个甚至还没有被渲染的位置。应该如何在未渲染的东西上执行滚动? 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
会自动将选定的行移动到视口中。
我尝试使用 NatTableExamples-1.4.0 并尝试将 ShowRowInViewportCommand
与 _900_test\viewportSelection\ViewportSelectionHideShowDataLayerExample
一起使用。
我将从createExampleControl
方法和overloaded onStart()
方法获得的nattable
对象存储如下:
@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 方法。
我应该怎么做才能看到自动滚动?
您的方法存在时间问题。你想让一些东西可见并滚动到那个甚至还没有被渲染的位置。应该如何在未渲染的东西上执行滚动? 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
会自动将选定的行移动到视口中。