0

我有以下类,它将图像添加到按钮,然后将按钮添加到面板

private PushButton button;
private AbsolutePanel panel = new AbsolutePanel();
private Image image = new Image("images/rectangle_blue.png");

public ExpandingRectangularButton(String text)
{
    String width = "120px";
    String height = "160px";
    image.setWidth(width);
    image.setHeight(height);
    button = new PushButton(image);
    panel.add(button, 0, 0);
    panel.setWidth(width);
    panel.setHeight(height);
    initWidget( panel );
}

当我显示 ExpandingRectangularButton 的实例时,该按钮在底部被截断。但是,如果我将面板从等式中取出,如下所示

private PushButton button;
private Image image = new Image("images/rectangle_blue.png");

public ExpandingRectangularButton(String text)
{
    String width = "120px";
    String height = "160px";
    image.setWidth(width);
    image.setHeight(height);
    button = new PushButton(image);
    initWidget( button );
}

并且只需使用图像和按钮(即我在按钮上调用 init() )然后图像将显示而不会被截断。由于我没有设置按钮的高度,我假设它会动态增长以适应它的子小部件。为什么我将按钮放在面板上时不会发生这种情况?

4

1 回答 1

0

引用 Javadoc:

绝对面板绝对定位其所有子项,允许它们重叠。

请注意,此面板不会自动调整自身大小以为其绝对定位的子项留出足够的空间。它必须明确调整大小以便为它们腾出空间。

你可以:

  • 显式设置AbsolutePanel大小;
  • overflow: hidden从中删除属性(解决方法);
  • 用于panel.add(button, -1, -1)静态定位按钮;
  • AbsolutePanel用一个自然适应其大小的(就像几乎任何其他的一样)更改Panel

我更喜欢最后一个,但你的用例不清楚。

于 2013-03-28T10:29:55.173 回答