天道酬勤,学无止境

GWT - FlowPanel 和调整大小(GWT - FlowPanel and resizing)

问题

我的应用程序中有几个Composite小部件,它们使用FlowPanel作为其主要元素。 我想知道的是,我需要为此以任何方式调整大小吗? FlowPanel没有实现RequiresResize ,所以我不能使用ResizeComposite ,但也许这意味着我不必? 但是FlowPanel内的小部件是FlowPanel通知调整大小的呢?

回答1

如果您想让您的小部件适应您的浏览器窗口,请不要使用 FlowPanel 作为您的基础组合。 请改用 LayoutPanels。

检查这个:

http://www.gwtproject.org/doc/latest/DevGuideUiPanels.html

标签

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 根据内容调整 GWT 面板的高度(Adjusting height of GWT Panels based on content)
    问题 我们有许多使用不同类型 GWT 面板的屏幕。 许多屏幕的一个常见问题是,内容大小是在运行时派生的。 因此,如果我为面板(垂直/水平/DockPanel)定义高度,并且当面板中添加任何新组件或内容更多时,面板高度保持不变。 所以我们看不到内容。 UI 外观和感觉变得最差。 我们如何处理身高问题? 当屏幕上的某些内容发生变化时,我们是否必须手动编码以调整每个面板/小部件的高度。 这不是一种非常糟糕的编码方式吗? 另外,现在我们在某些地方有数据网格,如果没有记录非常少,我们会看到数据网格下方有一个巨大的空间,不知道我们如何处理这些情况? 根据评论在下面更新了几个示例:您的意思是说,每当我们知道内容垂直增长时,我们总是可以选择 FlowPanel。 因为,我们使用了一些屏幕垂直面板/水平面板,当用户单击某些内容时,会在其中添加和显示新字段。 所以垂直面板/水平面板高度不会自动调整。 再举一个例子,我们在 Dock Layout Panel 内容区域内有主垂直面板,其中有一些内容可能会有所不同的小部件。 所以现在如果我对大小不同的内容使用 FlowPanel,那么外面板呢? 会调整吗? 再次说明我们使用的面板类型 - Dock Layout Panel 与固定页眉、页脚、左侧菜单和内容区域一起使用。 在内容区域内使用滚动面板。 我们所有不同的小部件都在这个里面,这是水平/垂直
  • GWT - FlowPanel and resizing
    I have several Composite widgets in my application that use a FlowPanel as their main element. What I want to know is, do I need to take care of resizing in any way for this? FlowPanel does not implement RequiresResize, so I can't use a ResizeComposite, but maybe that means I don't have to? But then how are the widgets inside the FlowPanel informed of resizing?
  • GWT: how to get new size when doing onResize() in SplitLayoutPanel?
    I have a SplitLayoutPanel where one of the child components is a FlowPanel. I've extended FlowPanel to create a ResizableFlowPanel which implements ProvidesResize and RequiresResize, because the FlowPanel has child components which need to Resize as well. When dragging the splitters of the SplitLayoutPanel, how do you get the new size of the child components? I've tried using getOffsetWidth() and getElement().getOffsetWidth from within the FlowPanel, and both are returning the original size, not the new size. What am I doing wrong? Here's the FlowPanel subclass I'm trying: class
  • 如何使用 uibinder 与孩子一起创建 gwt 复合组件?(How to create a gwt composite component with children using uibinder?)
    问题 我想创建一个组件来装饰它的孩子,例如: mycomponent.ui.xml: <g:FlowPanel addStyleNames="myStyle"> <!-- how can i render children ? --> </g:FlowPanel> 然后其他人可以使用: <myapp:mycomponent> <g:Label>Decorated child</g:Label> </myapp:mycomponent> 我如何在 uibinder 中渲染孩子? (或者在 Java 中,如果我必须的话) 回答1 让MyComponent实现HasWidgets接口以添加/删除子小部件。 MyComponent.ui.xml看起来很简单 <g:FlowPanel ui:field="main" /> 当您将在HasWidgets指定的方法委托给FlowPanel : public class MyComponent extends Composite implements HasWidgets { private static MyComponentUiBinder uiBinder = GWT.create(MyComponentUiBinder.class); interface MyComponentUiBinder extends UiBinder<Widget
  • GWT - How to layout components horizontally in a FlowPanel?
    The GWT documentation recommends using a FlowPanel (float: left set on its children) as a replacement for the HorizontalPanel to layout components. But how to do this?
  • Adjusting height of GWT Panels based on content
    We have many screens where different types of GWT panels are used. One common problem across many screens is that, content size is derived at runtime. So, if I define a height for a panel(Vertical/Horizontal/DockPanel) and when any new components are getting added within panel or content is more, panel height remains the same. So we are not able to see the contents. UI look and feel becomes worst. How do we handle the height problems? Do we have to manually code to adjust every panel/widget height when something gets changed in screen. Is it not a very bad way of coding? Also, now we have
  • How to create a gwt composite component with children using uibinder?
    I would like to create a component to decorate its children, such as: mycomponent.ui.xml: <g:FlowPanel addStyleNames="myStyle"> <!-- how can i render children ? --> </g:FlowPanel> and then others can use: <myapp:mycomponent> <g:Label>Decorated child</g:Label> </myapp:mycomponent> How can i render the children in uibinder? (or in Java, if i must)
  • How to prefetch image in GWT?
    I tried the following code: RootPanel root = RootPanel.get("root"); root.clear(); final FlowPanel p = new FlowPanel(); root.add(p); for (int i=0; i<20; ++i) { String url = "/thumb/"+i; final Image img = new Image(url); img.addLoadHandler(new LoadHandler() { @Override public void onLoad(LoadEvent event) { p.add(img); } }); Image.prefetch(url); But it does not work for me. Did I missed something?
  • GWT UiBinder and Image Sprites
    I'm having trouble getting CSS image sprites to appear in GWT UiBinder. I did review how do i use image sprites in GWT?, but found I was already doing what was suggested. I have a ui.xml, ClientBundle interface with a CssBundle nested interface, and a css file. ui.xml: <!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:with field="resources" type="edu.wts.upholdingthetruth.poweroftheword.client.resources.POWResources" /> <g:FlowPanel width="100%" styleName="
  • 试图让UIBinder给我一个跨度而不是一个div(Trying to get UIBinder to give me a span not a div)
    问题 我正在使用UiBinder构建小部件,并且需要将其包含在<span />但UiBinder仅给我<div /> 。 例如<g:HTMLPanel /> => <div /> 。 Horizo​​nPanel,FlowPanel,VerticalPanel也仅给出<div /> 。 有谁知道解决方案吗? 回答1 试试这个: <ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui'> <g:HTMLPanel tag="span"> <!-- your stuff --> </g:HTMLPanel> </ui:UiBinder> 回答2 您可以继续使用<div>而只是在其CSS中添加display: inline ,这将使其显示为好像是<span> 。 编辑:固定的地方在我说“ div”但意思是“ span”的末尾。 回答3 关于罗伯特(Robert)的上述回答(对不起,我不知道如何直接评论) 这无法立即使用,因为无法将小部件放置在纯HTML内(编译器会给您“错误:在html上下文中找到了小部件”)。 但是有一个简单的解决方法: <ui:UiBinder xmlns:ui='urn:ui:com.google.gwt
  • 在 GWT 中将调整大小的侦听器/处理程序添加到 VerticalPanel(Adding resize listener/handler to VerticalPanel in GWT)
    问题 如何将侦听器/处理程序添加到 VerticalPanel,以便在 VerticalPanel 的大小发生变化时触发它? 我基本上尝试了以下内容: VerticalPanel myPanel = new VerticalPanel(); //... code to add child widgets that may change the size of the parent vertical panel ... myPanel.addHandler(new ResizeHandler() { public void onResize(final ResizeEvent event) { //... code to handle resize of vertical panel ... } }, ResizeEvent.getType() ); 但处理程序没有被触发。 回答1 可靠的是窗口级调整大小侦听器: Window.addResizeHandler(new WindowResizeHandler()) 当用户调整浏览器窗口大小时,将调用调整大小处理程序: public void onResize(ResizeEvent event) 您可以使用event.getHeight()和event.getWidth()来获取更新的窗口尺寸。 由于您只获取整个窗口的事件
  • 使用“gwt-maps-3.8.0”触发从 GWT 2.5 到 Google Maps 的调整大小事件(trigger resize Event to Google Maps from GWT 2.5 using “gwt-maps-3.8.0”)
    问题 使用gwt-maps-3.8.0 lib GWT-Maps,我无法触发调整大小。 -> 尝试使用“import com.google.gwt.user.client.Event;” -> Event.trigger(mapWidget,"resize"); “事件类型的触发器(GoogleMap,String)方法未定义” (这是从这里开始的后续行动:第二次调用谷歌地图没有以正确的尺寸显示地图) 回答1 这是迄今为止我发现的最好的: private final native void resizeMap(GoogleMap map) /*-{ $wnd.google.maps.event.trigger(map, 'resize'); }-*/; 回答2 如果您不想使用自己的 nativ JS 代码,您可以使用 gwt-maps-3.8.0 库提供的mapWidget.getMap().triggerResize()方法
  • 是否可以将文件从服务器下载到具有MGWT&GwtPhoneGap应用程序的设备上?(Is it possible to download a file from server to my device having MGWT&GwtPhoneGap app?)
    问题 我使用MGWT和GwtPhoneGap开发了一个应用程序,并使用rpc进行服务器通信。 我想将文件从服务器下载到我的客户端设备(iOs / android)。这可能吗? 如果是这样,我需要做些什么来实现自己的目标? 我没有从MGWT论坛获得大力支持。 请告诉我这样做的方法。 提前致谢 我在这个问题上做了一些努力,我已经做到了。 但仍然没有成功。 请仔细检查我的代码。 public final native String download(String serverUrl,String filepath,Callback callback) /*-{ return this.download(serverUrl, filePath, function(result) { callback.Callback::o:onSuccess(Result;);)(result); }, function(error) { callback.Callback::o:onError(Error;);)(error); }); }-*/; 回答1 如果文件是简单文件(例如PDF),只需在文件URL上放置一个链接,移动导航器会将文件下载到手机上。 如果生成了文件,则必须创建一个servlet来进行下载: public class ServletDownloadDemo extends
  • 正确处理和删除对UserControl的引用,以避免内存泄漏(Properly disposing of, and removing references to UserControls, to avoid memory leak)
    问题 我正在使用Visual c#express 2010在c#中开发Windows窗体应用程序(.NET 4.0)。在释放分配给不再使用的UserControl的内存时遇到问题。 问题: 我有一个FlowLayoutPanel,其中显示自定义UserControls。 FlowLayoutPanel显示搜索结果等,因此必须重复更新显示的UserControl集合。 在创建并显示这些UserControl的每个新集合之前,在FlowLayoutPanel的ControlCollection(控件属性)中当前包含的所有控件上调用Dispose(),然后在同一个ControlCollection上调用Clear()。 这似乎不足以处置UserControls所使用的资源,因为对于每组新创建并添加到我的ControlCollection的UserControls来说,我的UserControls似乎也没有被垃圾回收所要求。 该应用程序的内存使用率在短时间内急剧上升,然后达到稳定状态,直到我显示另一个列表。 我还使用.NET Memory Profiler分析了我的应用程序,该应用程序报告了许多可能的内存泄漏(请参阅下一部分)。 我认为出了问题: 我错了。 问题是由使用foreach构造遍历ControlCollection并在其控件上调用Dispose()引起的错误,Hans
  • Fixed width, variable height in JPanel with flow
    I have an annoying problem with Java’s layout managers. I have the following situation: In a panel A are two other panels B with an absolute layout and C with a FlowLayout. B is highly customized and has a fixed size set via setPreferredSize. C should have the same fixed width as B but otherwise be of a variable height, depending on how many components are added in the flow. The resulting A should then have the fixed width and A.height + B.height as the height – at least that is what I want. However what I get is that the width of the panel A is not fixed at all (even if I set its preferred
  • 在Swing GUI中提供空白(Providing white space in a Swing GUI)
    问题 没有空格的GUI显得“拥挤”。 如何提供空白而不诉诸显式设置组件的位置或大小? 回答1 使用各种LayoutManagers可以在各种组件之间提供间距。 1.)BorderLayout: 重载的构造方法: BorderLayout(int horizo​​ntalGap,int verticalGap) getter和setter方法对于水平间距: BorderLayout.getHgap()和BorderLayout.setHgap(int hgap) 对于垂直间距: BorderLayout.getVgap()和BorderLayout.setVgap() 2.)FlowLayout: 重载的构造方法: FlowLayout(int align,int hgap,int vgap) getter和setter方法对于水平间距: FlowLayout.getHgap()和FlowLayout.setHgap(int hgap) 对于垂直间距: FlowLayout.getVgap()和FlowLayout.setVgap() 3.)GridLayout: 重载的构造方法: GridLayout(int行,int列,int hgap,int vgap) getter和setter方法对于水平间距: GridLayout.getHgap()和GridLayout.setHgap
  • 谷歌地图的第二次呼叫未以正确的大小显示地图(second call of google maps does not show the map in correct size)
    问题 使用gwt-maps-3.8.0,我在gwt弹出窗口中显示一条路线。 一次调用有效,但第二次调用无效。 我该怎么办...一些建议来刷新mapWidget? 回答1 显示地图时,触发其resize事件。 从文档中: 当div更改大小时,开发人员应在地图上触发此事件: google.maps.event.trigger(map, 'resize') 看来在GWT中执行此操作的方法是 Event.trigger(mapWidget.getMap(), "resize"); 目前,就API而言,地图的大小为零,因此它只是在(0,0)的单个像素周围显示图块的缓冲区。 触发resize事件会使API从浏览器获取正确的大小,因此将获取正确的图块进行显示。 回答2 我遇到了同样的问题(地图显示在弹出窗口中;重新加载弹出窗口,地图不再居中)。 最后,我设法使用GoogleMap类中的triggerResize方法解决了我的问题。 但是,它仅在我从Idle事件触发此方法后才起作用。 triggerResize将通知地图以显示正确的图块。 setCenter将确保地图再次居中。 gMap.addIdleListenerOnce(new IdleHandler() { @Override public void handle() { gMap.triggerResize(); gMap
  • How to get the rendered size of a <div>
    I have a FlowPanel, whose height is fixed (it is actually a percentage of its parent's height, which is fixed). In this panel, I add several div elements. Using CSS, I set its height as 100% of its parent. What I want to do is set its width to be equal to its height using javascript. The issue I have is that I don't know when to run this bit of javascript. I tried adding it to the onLoad() method of my container, but the height is not known yet (getOffsetHeight() returns 0). I had a look at similar questions (like GWT - Retrieve size of a widget that is not displayed), but they were not
  • How can i implement the paging effect in a FlowLayoutPanel control?
    Thanks to the following code i create and add images - as thumbnails - to the FlowLayoutPanel. The implementation is pretty simple. I read the available images within the directory and call the following sub procedure. Private Sub LoadImages(ByVal FlowPanel As FlowLayoutPanel, ByVal fi As FileInfo) Pedit = New DevExpress.XtraEditors.PictureEdit Pedit.Width = txtIconsWidth.EditValue Pedit.Height = Pedit.Width / (4 / 3) Dim fs As System.IO.FileStream fs = New System.IO.FileStream(fi.FullName, IO.FileMode.Open, IO.FileAccess.Read) Pedit.Image = System.Drawing.Image.FromStream(fs) fs.Close() fs
  • 企业应用程序是否使用 GWT [关闭](GWT or not for enterprise apps [closed])
    问题 关闭。 这个问题是基于意见的。 它目前不接受答案。 想改善这个问题吗? 更新问题,以便通过编辑这篇文章用事实和引文来回答问题。 去年关闭。 改进这个问题 我正在开发一种在 app-engine 上创建企业级应用程序的工具。 这需要跨浏览器(也包括IE8),在移动设备上工作,稍后还通过(Qt4/GTK/etc)支持桌面客户端 我一直面临的问题是:对于我的网络应用程序 - 我应该使用 GWT(GoogleWebToolkit) 还是不? 我非常擅长使用“EXT-JS”,但由于其开源政策,它不是一个选择。 还有另一个框架“SmartClient”,它有一个更好的开源许可证——它非常成熟,比 EXT-JS(基于一些 POC)更好,但它的文档很糟糕! 我需要花很多时间才能以正确的方式完成某件事。 SmartClient 和 EXT-JS 非常适合企业级应用程序(如果使用得当)——我在 Ext-JS 上经历过这种情况,并且对 SmartClient 也非常肯定。 然后是“JQuery 和插件以及 HTML5”的组合。 与上述库相比,我喜欢更快、更干净、更小的 JS。 我对 HTML5 持怀疑态度,因为这是一个不断发展的标准 我真正喜欢 GWT 的是它的性能优势。 至少这些例子似乎工作得很好。 我不喜欢它的是 Java,而且我非常擅长 javascript 对于我在 app-engine