作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 GWT 中编写了自己的 PopupPanel
。我想显示相对于其他小部件的弹出窗口。我对该类的实现如下所示:
public class Popover extends PopupPanel implements PositionCallback {
private static final Binder binder = GWT.create(Binder.class);
private UIObject relative;
interface Binder extends UiBinder<Widget, Popover> {
}
public Popover() {
setWidget(binder.createAndBindUi(this));
setStylePrimaryName("popover");
}
public void show(UIObject relative) {
this.relative = relative;
setPopupPositionAndShow(this);
}
public void setPosition(int offsetWidth, int offsetHeight) {
if (relative != null) {
int left = relative.getAbsoluteLeft();
int top = relative.getAbsoluteTop();
int width = relative.getOffsetWidth();
int height = relative.getOffsetHeight();
int topCenter = top + height / 2 - offsetHeight / 2;
if (offsetWidth < left) {
setPopupPosition(left - offsetWidth, topCenter);
} else {
setPopupPosition(left + width, topCenter);
}
}
}
}
问题是 offsetWidth
和 offsetHeight
总是 10
?
我的 Popover.ui.xml
如下所示:
<g:FlowPanel stylePrimaryName="popover">
<g:FlowPanel stylePrimaryName="arrow" />
<g:FlowPanel stylePrimaryName="inner">
<g:Label stylePrimaryName="title" text="New Label" />
<g:FlowPanel stylePrimaryName="content">
<g:Label text="Hallo" />
</g:FlowPanel>
</g:FlowPanel>
</g:FlowPanel>
最佳答案
为了解决这个问题,我遵循了 PopupPanel
的 setPopupPositionAndShow()
使用的步骤,但我将定位步骤设为延迟命令。我的代码没有扩展 PopupPanel
,因此 popupPanel
变量:
popupPanel.setVisible(false);
popupPanel.show();
// Pausing until the event loop is clear appears to give the browser
// sufficient time to apply CSS styling. We use the popup's offset
// width and height to calculate the display position, but those
// dimensions are not accurate until styling has been applied.
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
yourMethodToSetPositionGoesHere(popupPanel);
popupPanel.setVisible(true);
}
});
关于GWT:PopupPanel setPopupPositionAndShow() 提供了错误的 offsetWidth 和 offsetHeight,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8054360/
我在 GWT 中编写了自己的 PopupPanel。我想显示相对于其他小部件的弹出窗口。我对该类的实现如下所示: public class Popover extends PopupPanel imp
我是一名优秀的程序员,十分优秀!