2013-03-28 2 views
0

я следующий класс, который добавляет изображение к кнопке, а затем добавляю кнопку на панельGWT виджет усекается на панели

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() на кнопке), то изображение будет отображаться без какого-либо усечения. Поскольку я не устанавливаю высоту кнопки, я предполагаю, что она динамически растет, чтобы разместить ее дочерний виджет. Почему это не происходит, когда я нажимаю кнопку на панель?

ответ

0

Цитируя Javadoc:

An позиции абсолютной панели все ее дети абсолютно, что позволяет им пересекаться.

Обратите внимание, что эта панель не будет автоматически изменяться самостоятельно, чтобы обеспечить достаточное пространство для своих детей с абсолютно позиционированным расположением. Он должен быть явно определен, чтобы освободить место для них.

Вы можете:

  • явно установить AbsolutePanel размер;
  • удалить из него overflow: hidden (обходной путь);
  • использовать panel.add(button, -1, -1) для позиционирования кнопки статически;
  • измените AbsolutePanel на тот, который естественным образом приспосабливает его размер (как почти любой другой Panel).

Я бы предпочел последнее, но ваш случай использования не ясен.

+0

Я забыл добавить к OP, что я попытался явно установить размер панели так же, как и дочерний. В соответствии с документами (Обновлено сейчас), но это не имело никакого значения. Мне нужно использовать панель Absolute, потому что я не могу найти другого способа динамически позиционировать ярлык в зависимости от его длины текста над кнопкой с фоновым изображением – MayoMan

Смежные вопросы