生成的Div造成严重破坏

时间:2011-09-26 14:10:47

标签: java css vaadin

我会尝试并尽可能地描述这个问题。

我正在使用Vaadin(类似GWT的框架)开发一个Web应用程序,我在其中使用模态窗口来显示表格和其他信息。

模态窗口的大小各不相同,但出于显而易见的原因,我想为所有这些窗口使用相同的CSS类。因此我在CSS之外指定尺寸特定参数,而在创建模态窗口时指定java代码。例如:

public class InventoryAssignSubscription extends Window {

   Panel mainPanel = Cf.panel(I18N.get("inventory.assignsubscription.single.header"));

   public void init(Object customer)    {

        setResizable(false);

        setModal(true);
        setWidth("730px");
        center();

        mainPanel.addStyleName("m2m-modalwindow-mainpanel");

但是,我发现了一个问题。

当我创建一个包含窗口中所有内容的Panel组件时,它的宽度将填充窗口的内容宽度,但当我查看通过Firebug生成的标记时,我看到生成了另一个组件,Panel中的VerticalLayout另一个宽度比面板。我不知道它是如何实现的。我得到的问题是VerticalLayout太大并导致Panel底部的水平滚动。这就是它在Firebug中的样子:

enter image description here

我找到解决此问题的唯一方法是使用 m2m-modalwindow-mainpanel CSS类名称设置Panel内所有VerticalLayout的最大宽度:

.v-panel-content-m2m-modalwindow-mainpanel .v-verticallayout {
    max-width: 1000px;
}

但是,这仅适用于一个窗口,即内容以1000像素宽度显示的窗口。较瘦的Windows永远不会让这个CSS类受到VerticalLayout的影响,因为它们的宽度应该低于1000px .... =(

有没有人知道如何解决这个问题?也许某种程度上,当我创建Panel时,我可以用某种方式告诉它它“生成”的组件(div)应该具有最大宽度..?

如果我的问题描述得过于生动,或者您需要更多信息来帮我解决,请随时提出!

谢谢!

编辑:我为Panel填充添加了CSS,Firebug中的图像显示了问题。不幸的是,面板底部有一个滚动条没有显示在图像中..

CSS

.v-panel-content-m2m-modalwindow-mainpanel {
    padding: 15px;
}

图像: enter image description here

1 个答案:

答案 0 :(得分:2)

默认情况下,Vaadin中的每个面板都有一个垂直布局。事实上,您已将730设置为Panel的宽度,并且布局仅为704像素宽,表示您的面板中有一个边距。尝试使用Firebug中的布局选项卡查看导致差异的原因。

Vaadin开发人员付出了很多努力来确保正确的尺寸,并且在没有任何解释的情况下不应该有任何东西。

将您的问题发布到Vaadin's forum

是个好主意