GWT composite dynamische Höhe Größe ändern
Habe ich ein GWT-Composite, auf die einige andere Verbundwerkstoffe werden dynamisch Hinzugefügt.
Ich möchte, um möglicherweise Übergeordneten zusammengesetzten Größe, um die Höhe der alle seine Kind-widgets automatisch.
ich habe versucht, setHeight("100%") für Composite, aber das funktioniert nicht.
keine Idee, wie diese Funktionalität zu erreichen?
Dank.
EDIT:
final DockLayoutPanel dockLayoutPanel = new DockLayoutPanel(Unit.EM);
dockLayoutPanel.setStyleName("EntryPanel");
dockLayoutPanel.setSize("142px", "72px");
initWidget(dockLayoutPanel);
final VerticalPanel panel = new VerticalPanel();
panel.setSize("140px", "72px");
chckbxExport = new CheckBox("Export");
putField(CommonPresenter.CONSTANTS.EXPORT, chckbxExport);
dateBox = new DateBox();
dateBox.addValueChangeHandler(new ValueChangeHandler<Date>() {
@Override
public void onValueChange(final ValueChangeEvent<Date> event) {
dateChanged = true;
}
});
panel.add(dateBox);
final ListBox visibility = new ListBox();
final Label lblVisibility = new Label("Visibility:");
LabeledWidget vis = new LabeledWidget(lblVisibility, visibility);
for (int i = 0; i < CommonPresenter.CONSTANTS.VISIBILITIES.length; i++) {
visibility.addItem(CommonPresenter.CONSTANTS.VISIBILITIES[i]);
}
putField(CommonPresenter.CONSTANTS.VISIBILITY, visibility);
panel.add(vis);
panel.add(chckbxExport);
dockLayoutPanel.add(panel);
UPDATE:
Einstellung Composite Breite zu füllen, die alle verfügbaren Fenster horizontal space:
final int scrollBarWidth = 25;
//editPanel.setHeight("180px");
setWidth(Window.getClientWidth() - scrollBarWidth + "px");
//editPanel.setStyleName("EditorPanel");
Window.addResizeHandler(new ResizeHandler()
{
public void onResize(ResizeEvent event)
{
int width = event.getWidth();
setWidth(width - scrollBarWidth + "px");
}
});
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist, wie es generell mit HTML+CSS:
auto
).absolute
/fixed
Positionierung für die Kinder).Die Höhe des übergeordneten Elements wird dann automatisch angepasst werden. Dies ist die gleiche für GWT Composites - so stellen Sie sicher, die CSS (einschließlich style-Attribute) für Ihre Elemente! Wenn Sie unsicher sind, verwenden Sie Firebug.
Wenn Sie weitere Einzelheiten, dann würden Sie post haben einige code, der veranschaulicht, wie erstellen Sie die übergeordnete composite (UiBinder, ...?)
absolute
Positionierung... Wie bereits in meiner Antwort, die Kinder müssen nicht verwendet werden - es kann nie funktionieren, weil absolut positionierte die Kinder nicht, Einfluss der Eltern, die Größe (das ist, was die absolute Positionierung ist)! Versuchen Sie es mit einemFlowPanel
statt. Sie wahrscheinlich auch nicht brauchen, dieVerticalPanel
(?)FlowPanel
- alles andere hängt ganz auf das, was Sie erreichen wollen. Durch die Art und Weise, eine Menge Dinge, die getan werden kann, mit dem FlowPanel, wenn Sie CSS verwenden, um die position der Kinder (dies kann eine gute Technik und ist auch vorgeschlagen durch das GWT-team).position: absolute;
im CSS. Bitte verwenden Sie Firebug (oder einem ähnlichen tool) untersuchen Sie die generierten HTML-Elemente aus - Sie werden sehen, dass DockLayoutPanel mit absoluter Positionierung.100%
?Anstelle der Verwendung von "100%" können Sie die tatsächliche Höhe durch Fenster#getClientHeight(). Für Szenarien, wo der user die Größe des browser, die Sie verwenden können, eine ResizeHandler.
Versuchen Überschreiben der Resize()(Ihre Klasse erweitern müssen, um ResizeComposite).
In dieser neu-Größe-Methode festgelegt, die Größe, die Sie wollen.
Dieser arbeitet Sie dynamisch, weil jedes mal, wenn das Fenster die Größe neu, diese Methode aufgerufen wird und die Werte entsprechend eingestellt sind.