GWT弹出窗口setGlassEnabled(true)无效

7

我正在创建一个弹出面板,其中包含相同的文本,我想禁用背景并使其变灰。我阅读了有关setGlassEnabled的内容,但它没有起作用,有人能帮忙吗?附:弹出窗口已正确显示。

PopupPanel popup = new PopupPanel(infoType);
popup.center();
popup.setGlassEnabled(true);
popup.show();
3个回答

9
玻璃面板默认没有样式,因此默认情况下是透明的。如果您希望背景变灰,需要向玻璃面板添加一些CSS样式。
另外,setGlassEnabled仅在下一次显示弹出窗口时启用玻璃面板,在您的情况下,当您调用show时弹出窗口已经显示(因为之前调用了center),所以它是无操作的,实际上并未使用玻璃面板。将您的center调用移动到setGlassEnabled调用之后和/或在setGlassEnabled之前调用hide。

没有 CSS,它无法禁用背景吗? - Matteo

1
将以下代码放在您的对话框构造函数顶部似乎可以解决我的问题。
setGlassEnabled(true);

Style glassStyle = getGlassElement().getStyle();
glassStyle.setProperty("width", "100%");
glassStyle.setProperty("height", "100%");
glassStyle.setProperty("backgroundColor", "#000");
glassStyle.setProperty("opacity", "0.45");
glassStyle.setProperty("mozOpacity", "0.45");
glassStyle.setProperty("filter", " alpha(opacity=45)");

0

setGlassEnabled()的javadoc有点误导人,它说“背景将会被一个半透明的窗格阻挡”。实际上,它只会应用一个全屏的div,样式名默认为'gwt-PopupPanelGlass'(至少在GWT 2.4版本中是这样)。如果你的项目使用了像com.google.gwt.user.theme.clean.Clean这样的主题,那么clean.css会提供你期望的半透明窗格:

.gwt-PopupPanelGlass {
    background-color: #000;
    opacity: 0.3;
    filter: alpha(opacity=30);
} 

否则,如先前所述,您将不得不自己编写代码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接