मुझे ब्राउज़र विंडो आकार बदलने पर पॉपअप का आकार बदलने की आवश्यकता है। मैंने अपने पॉपअप कन्स्ट्रक्टर में ResizeHandler जोड़ा, लेकिन कई ब्राउज़र आकार बदलने केंद्र() फ़ंक्शन के बाद वर्तमान को केंद्रित करने के बजाय, नया पॉपअप बनाएं। यहां कुछ कोड जो मैंने पहले ही कोशिश की है। कृपया मुझे बताएं कि इसे कैसे हल करें या कुछ समाधान सुझाएं।ब्राउज़र विंडो का आकार बदलने पर जीडब्ल्यूटी का आकार बदलना और पॉपअप केंद्रित करना
public BigPopup() {
...
final BigPopup self = this;
Window.addResizeHandler(new ResizeHandler() {
@Override
public void onResize(ResizeEvent event) {
self.setHeight(getNewHeight());
self.setWidth(getNewWidth());
self.center();
}
});
...
}
public BigPopup() {
...
Window.addResizeHandler(new ResizeHandler() {
@Override
public void onResize(ResizeEvent event) {
BigPopup.this.setHeight(getNewHeight());
BigPopup.this.setWidth(getNewWidth());
BigPopup.this.center();
}
});
...
}
जोड़ा गया:
मैं एक साधारण परियोजना है कि समस्या को दिखाता बनाया: पॉपअप के कक्षा
package tesr.client;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.logical.shared.ResizeEvent;
import com.google.gwt.event.logical.shared.ResizeHandler;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.PopupPanel;
import com.google.gwt.user.client.ui.Widget;
public class BigPopup extends PopupPanel {
private static BigPopupUiBinder uiBinder = GWT
.create(BigPopupUiBinder.class);
interface BigPopupUiBinder extends UiBinder<Widget, BigPopup> {
}
@UiField
Button tstBtn;
@UiHandler("tstBtn")
void click(ClickEvent event) {
this.hide();
}
public int[] getSize() {
int[] mas = new int[2];
int x = Window.getClientWidth();
int y = Window.getClientHeight();
if (x >= 1024) {
mas[0] = x - 100;
mas[1] = y - 100;
} else {
mas[0] = 1024;
mas[1] = 768;
}
return mas;
}
public BigPopup() {
setWidget(uiBinder.createAndBindUi(this));
Window.addResizeHandler(new ResizeHandler() {
@Override
public void onResize(ResizeEvent event) {
BigPopup.this.setHeight(getSize()[1] + "px");
BigPopup.this.setWidth(getSize()[0] + "px");
BigPopup.this.center();
}
});
this.setHeight(getSize()[1] + "px");
this.setWidth(getSize()[0] + "px");
this.setAnimationEnabled(true);
this.setGlassEnabled(true);
this.setAutoHideEnabled(false);
}
}
UiBinder
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<ui:style>
</ui:style>
<g:HTMLPanel>
<g:Label text="testLabel"></g:Label>
<g:Button text="testButton" ui:field="tstBtn"></g:Button>
</g:HTMLPanel>
</ui:UiBinder>
और मुख्य वर्ग के लिए एक्सएमएल
package tesr.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.RootPanel;
public class AAA implements EntryPoint {
public void onModuleLoad() {
Button btn = new Button("Show Popup");
btn.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
BigPopup popup = new BigPopup();
popup.center();
}
});
RootPanel.get().add(btn);
}
}
मैं क्या गलत कर रहा हूं? या शायद यह जीडब्ल्यूटी की बग है?
यह मेरे लिए काम करता है - मैं समस्या को पुन: उत्पन्न नहीं कर सकता। मुझे नहीं पता, क्या प्राप्त होता है न्यूविड्थ() 'वास्तव में करता है, और मुझे यकीन नहीं है कि बिगपॉप ओवरराइड किस तरीके से है (आप' com.google.gwt.user.client.ui.PopupPanel' का उपयोग कर रहे हैं, न कि ' Ext-GWT से पॉपअप ', या ऐसा कुछ?) –
getNewWidth() और getNewHeight() वापसी स्ट्रिंग जैसे "120px"। BigPopup PopupPanel फैलाता है। जब मैं केंद्र() विधि के इस प्रभाव को देखा तो मैं चौंक गया। शो() विधि का एक ही प्रभाव है। कक्षा में कोई ओवरराइड विधियां नहीं हैं। –
मैंने यह भी परीक्षण किया है, यह बिना किसी समस्या के काम करता है, जब भी मैं कई बार आकार बदलता हूं तो पॉपअप जादूगर रूप से बनाया जाता है .. –