1

我想淡入我的PopupPanel页面。我可以自己获取PopupPanel元素并为不透明度设置动画,但我无法访问玻璃元素。PopupPanel这并不是一个真正的技术问题,而是对选择暴露的内容的限制(我会说) 。

有谁知道解决方法或替代方法?谢谢!

4

2 回答 2

2

基本上所有的玻璃面板看起来都像

<div class="gwt-PopupPanelGlass" style="..."></div>

因此,如果您真的需要获取此元素并为其设置动画,您可以通过 jsni 执行以下操作:

elements = document.getElementsByClassName("gwt-PopupPanelGlass")

然后像你想要的那样改变元素样式。但这是某种解决方法,您需要在各种浏览器上进行测试。

于 2013-04-11T06:53:41.267 回答
1

解决方案 1 - 延迟绑定

示例- https://developers.google.com/web-toolkit/doc/latest/DevGuideCodingBasicsDeferred#example 理论- https://code.google.com/p/google-web-toolkit/wiki/DeferredBindingsForJRE

解决方案 2 - 使用 Java 类路径进行黑客攻击

当 java 在同一包层次结构中遇到重复的 java 文件时,它会从 jar 中选择一个在类路径中领先于其他的 java 文件。我们在某些情况下使用这种类覆盖技术来改变 GWT 类选择公开的内容。我们将PopupPanel java 文件复制到我们的代码库中,以 GWT 的确切包形式,即com.google.gwt.user.client.ui。

我们需要确保 GWT 编译器在 gwt-user.jar 之前的类路径中看到我们的PopupPanel版本。这意味着 GWT 编译器选择我们的版本,而不是 gwt 的!!!您可以继续编辑 PopupPanels 属性/方法范围,从私有到更高。

注意 -您需要确保 PopupPanel java 文件同步到每个 GWT 版本。

于 2013-04-11T03:20:45.660 回答