Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java端元素的GWT高度始终为0_Java_Gwt - Fatal编程技术网

java端元素的GWT高度始终为0

java端元素的GWT高度始终为0,java,gwt,Java,Gwt,我可能有一个愚蠢的问题,请接受我的道歉,但我只使用了GWT一个月 我想使用另一个面板的面板高度,但我得到了0值: FlowPanel first = new FlowPanel(); Label flexLabel = new Label("some content"); Button button = new Button(); first.add(flexLabel); first.add(button); FlowPanel second = new FlowPanel(); sec

我可能有一个愚蠢的问题,请接受我的道歉,但我只使用了GWT一个月

我想使用另一个面板的面板高度,但我得到了0值:

FlowPanel first = new FlowPanel();
Label flexLabel = new Label("some content");
Button button = new Button();

first.add(flexLabel);
first.add(button);


FlowPanel second = new FlowPanel();
second.setHeight(first.getElement().getClientHeight()); // set 0 value always
为什么我总是得到0??我知道GWT引擎在将java代码转换为javascript时会在运行时设置此值,但为什么不设置适当的值呢?
如何解决这个问题?

在浏览器完成渲染之前,GWT中的所有小部件(包括面板)的大小都为零

你有两个选择

  • 渲染布局。然后,在延迟调度程序命令中请求第一个面板的高度(请在此处阅读更多信息:)。使用此高度调整第二个面板。幸运的是,在生产模式下,这一切发生得非常快,所以用户不太可能注意到它

  • 如果要并排放置这些面板,可以使用LayoutPanel或HorizontalPanel来实现相同的效果


  • 何时调用此代码?请记住,客户端高度仅在呈现ui后可用。除了使用这种技术之外,还有其他方法来布局UI。second.setHeight(first.getElement().getClientHeight());-这叫。我认为只有在呈现ui之后,高度才可用。什么是“布局”??问题是,我必须有相同的高度,第一个面板的第二个面板。第二个面板取决于第一个。是否首先将
    FlowPanel
    添加到根容器中?yeap。RootPanel.get().add(首先)Andrei嗨,我有一个关于计时器的问题。我做了一个定时器,它可以设置面板的高度,并设置定时器;但有时我观察到高度不固定。你能解释一下怎么了吗?Thx提前使用定时器而不是调度器来设置高度的原因是什么?在定时器中设置的指定时间可能不够,也可能不够。我不能不看你的代码,也可能不分析你的应用程序,就知道为什么在某些情况下指定的时间延迟是不够的。在调度程序中,您只需说“无论何时完成页面渲染,请执行此操作”。