如何解决使GWT ScrollPanel在底部开始其垂直滚动条
| 我知道关于GWT ScrollPanel及其工作原理存在一些问题,但请允许我解释一下情况。 我正在研究一个在路由器上实现QoS的项目。我现在处于项目的开发阶段,我需要创建一个Web界面来添加ssh和http等协议并为其分配带宽。 为了节省内存使用量和网络流量,我不使用GWT-EXT或Smart GWT。因此,要设置带宽,我使用了一个ScrollPanel,其中有一个空的SimplePanel(太大了),只剩下滚动条。 现在这是问题所在: 我希望每个添加的协议的每个滚动条都从底部开始,而不是从顶部开始。如果先手动移动滚动条,然后使用任何函数,例如scrollToBottom()或setScrollPosition(),我都可以通过代码使用它。但是,如果要在手动移动滚动条之前先通过代码移动滚动条,则无法在其上调用函数。 (我会发布图片,但还不能发布-新用户) 摘要: 因此,如果我添加一个协议(使用名为btnAjouter的按钮),则每个协议的两个滑块(一个用于保证带宽,一个用于最大带宽)从顶部开始。我希望它们从小部件加载的底部开始。 有没有办法做到这一点? 提前致谢! 格伦解决方法
好的,我的同事找到了解决方案。不过,这是一个相当肮脏的。
关键是,仅当相关元素附加到DOM时,函数才起作用。我确实对Window.alert()进行了检查,以查看是否已连接。但问题是要尽早调用这些函数,例如在可以单击的按钮单击上就可以了。元素的创建和附加都非常快,因此Javascript跟不上,这是解决方案:
Timer t1 = new Timer()
{
@Override
public void run()
{
s1.getScroll().scrollToBottom();
s2.getScroll().scrollToBottom();
}
};
t1.schedule(20);
使用计时器不是周围最干净的解决方案,但可以使用。 s1和s2是我的自定义滑块,getScroll()获取附加到它的ScrollPanel。
,您可以扩展ScrollPanel并覆盖onLoad方法。在将小部件附加到浏览器的文档后,立即调用此方法。
@Override
protected void onLoad() {
scrollToBottom();
}
,您是否可以附加一个处理程序以侦听add事件,然后在该处理程序内执行以下操作:
panel.getElement().setScrollTop(panel.getElement().getScrollHeight());
\“ panel \”是您将协议添加到的面板。它不必是ScrollPanel。 HTMLPanel将起作用。
您可以将此方法包装在命令中,如果需要在浏览器事件循环返回后调用它,则将其传递给Schedule.scheduleDeferred:
Schedule.scheduleDeferred(new Scheduler.ScheduledCommand(
public void execute() {
panel.getElement().setScrollTop(panel.getElement().getScrollHeight());
}
));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。