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 に答える