[英]Basic Panel nesting in GWT
在GWT中可以嵌套基本面板吗?
<g:HTMLPanel>
<g:HTMLPanel>
.......
</g:HTMLPanel>
<g:ScrollPanel>
<g:HTMLPanel>
........
</g:HTMLPanel>
</g:ScrollPanel>
</g:HTMLPanel>
我的问题是我需要滚动第二个HTML面板。 我的UIBinder将在父HTMLPanel下包含两个子HTMLPanel。 但我需要第二个htmlpanel可滚动。
我刚刚创建了一个新的GWT项目,
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>
.important {
font-weight: bold;
}
</ui:style>
<g:HTMLPanel>
<g:HTMLPanel>
First panel
</g:HTMLPanel>
<g:ScrollPanel height="100px">
<g:HTMLPanel>
aaaaaaaaaa<br/>aaaaaaaaaa<br/>aaaaaaaaaa<br/>aaaaaaaaaa<br/>
aaaaaaaaaa<br/>aaaaaaaaaa<br/>aaaaaaaaaa<br/>aaaaaaaaaa<br/>
aaaaaaaaaa<br/>aaaaaaaaaa<br/>aaaaaaaaaa<br/>aaaaaaaaaa<br/>
aaaaaaaaaa<br/>aaaaaaaaaa<br/>aaaaaaaaaa<br/>aaaaaaaaaa<br/>
</g:HTMLPanel>
</g:ScrollPanel>
</g:HTMLPanel>
</ui:UiBinder>
和Java文件
public class RetaTest extends Composite implements HasText {
private static RetaTestUiBinder uiBinder = GWT
.create(RetaTestUiBinder.class);
interface RetaTestUiBinder extends UiBinder<Widget, RetaTest> {
}
public RetaTest() {
initWidget(uiBinder.createAndBindUi(this));
}
public RetaTest(String firstName) {
initWidget(uiBinder.createAndBindUi(this));
}
@Override
public String getText() {
// TODO Auto-generated method stub
return null;
}
@Override
public void setText(String text) {
// TODO Auto-generated method stub
}
}
和onModuleLoad
public void onModuleLoad() {
RootPanel.get().add(new RetaTest());
}
有用。
GWT中有一些小组可以根据其父母的意见和/或为他们的孩子提供意见。 例如,当您将HTMLPanel添加到RootPanel时,RootPanel会为此HTMLPanel提供其自己的大小(等于浏览器视图)。
但是,HTMLPanel不实现ProvidesResize()接口。 因此,当您向其添加另一个HTMLPanel和ScrollPanel时,这些面板的初始高度为零。 之后,这些小组将自己的孩子带到自己的高度。
这意味着您向ScrollPanel添加更多内容时将继续扩展,并且永远不会开始滚动。 您有两个解决方案。
首先,您可以在ScrollPanel上设置一个高度(即height =“ 100px”)。
其次,您可以使用LayoutPanel而不是HTMLPanel作为视图的容器,然后将HTMLPanel和ScrollPanel添加到此LayoutPanel的不同层。 每层为其子级提供大小。
在这两种情况下,您的ScrollPanel都将具有指定的高度(以像素,百分比,ems等为单位)。因此,一旦其子代的高度超过其自身的高度,它将开始滚动。
固定滚动面板的宽度,但不固定其子HTML面板的宽度。 然后它应该工作。 除了相应地固定width属性之外,您的代码中没有任何问题。
这只是您问题的精确解决方案。 但是要了解其他内容,请阅读Andrevi Glovin给出的第一个答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.