2011-07-16 9 views
7

Estoy creando un panel emergente con el mismo texto, me gustaría deshabilitar el fondo y gris. Leí sobre setGlassEnabled pero no funciona, ¿alguien puede ayudarme? PD. la ventana emergente se visualiza correctamente.GWT popup setGlassEnabled (true) no funciona

PopupPanel popup = new PopupPanel(infoType); 
popup.center(); 
popup.setGlassEnabled(true); 
popup.show(); 

Respuesta

8

El panel de vidrio no tiene un estilo predeterminado, por lo que es transparente por defecto. Si desea que el fondo esté atenuado, debe agregar un poco de estilo CSS al panel de vidrio.

Además, setGlassEnabled sólo permite el panel de vidrio para el siguiente tiempo se muestra la ventana emergente, y en su caso, la ventana emergente ya está mostrando cuando se llama show (debido a la llamada anterior a center), así que es una no-op y el panel de vidrio en realidad no se utiliza. Mueva su llamada al center para después de la llamada al setGlassEnabled y/o llame al hide antes del setGlassEnabled.

+0

y sin el css no deshabilita el backgroud? – Erick

+0

Actualizó la respuesta con información adicional. –

+0

tnks cambio la posición del espectáculo con el centro un trabajo – Erick

2

Poner el siguiente código en la parte superior del constructor del diálogo parece solucionar el problema.

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

el Javadoc para setGlassEnabled() es un poco engañoso diciendo que "el fondo se puede bloquear con un panel semitransparente". De hecho, todo lo que hará es aplicar un div de pantalla completa con un nombre de estilo predeterminado de 'gwt-PopupPanelGlass' (a partir de GWT 2.4, al menos). Si, por ejemplo, su proyecto <inherits> un tema como com.google.gwt.user.theme.clean.Clean, entonces clean.css suministra el panel semitransparente que estabas esperando:

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

De lo contrario, como se describió anteriormente, usted tiene que liar.

Cuestiones relacionadas