Установите ширину композита в процентах от его контейнера - PullRequest
2 голосов
/ 30 октября 2009

У меня есть несколько составных виджетов, каждый из которых имеет размер объекта, не зависящий от размера.

Когда я создаю экземпляр составного виджета, я бы хотел, чтобы он заполнил его контейнер в процентах, например, 80%.

Каждый из объектов в виджете будет расти, чтобы поместиться внутри композита, независимо от размера композита, но сам композит не будет расти в процентах от его контейнера.

Это вообще возможно? Я пробовал метод .setWidth (), но он не распознает% asd в качестве аргумента.


Я не устанавливаю размер в классе составного виджета.

У меня есть вызывающий класс, который создает экземпляр составного виджета, а затем вызывает метод setWidth () для нового объекта.

Я опробую ваш метод, и если он сработает, примените его к моей проблеме. Я отправлю еще раз, когда у меня будет больше информации.

Спасибо за помощь: -)

Ответы [ 3 ]

1 голос
/ 31 октября 2009

Конечно, это возможно. Композитный метод setWidth () также распознает%. Можете ли вы дать пример кода, который вы используете? Убедитесь, что вызов метода setWidth () должен быть после вызова initwidget () вашего композитного файла, например:

public class Widget1 extends Composite{
 private VerticaPanel panel=new VerticalPanel();
 public Widget1(){
   initWidget(panel);
   setWidth("80%");
   panel.add(new Widget2());
  }
} 

public class Widget2 extends Composite{
 private VerticaPanel panel=new VerticalPanel();
 public Widget2(){
   initWidget(panel);
   setWidth("100%");
  }
} 
0 голосов
/ 31 октября 2009

Спасибо. Куда вы добавляете эту композитную панель. Метод CompositePanel.setWidth ("100%") заставляет эту композитную панель использовать ее в качестве родителей шириной 100%. Так что в вашем случае ее родительская ширина меньше. Попробуйте следующий пример. Вы поймете, что делать в своем коде. Теперь ширина ограничена будет 800px.

VerticalPanel parentPanel=new VerticalPanel();
parentPanel.setWidth("800");
parentPanel.add(new CompositePanel());
RootPanel.get().add(parentPanel);
0 голосов
/ 31 октября 2009

Вот мой тестовый составной класс:

 **class CompositePane extends Composite {
//Define a panel that contains everything
private VerticalPanel compositePanel = new VerticalPanel();
private Button button1 = new Button("Button1");


public CompositePane(){//Start StatusPane constructor

    compositePanel.add(button1);
    initWidget(compositePanel);
    setWidth("100%");
    addStyleName("compositePanel");

}//End of StatusPane constructor


}//End of StatusPane class**

Вот мой стиль, прикрепленный к этому объекту, который показывает края составного объекта:

 .compositePanel{

 **border: 5px solid black;

}**

При использовании заданного значения пикселей граница расширяется, как и ожидалось.

При использовании 100% он плотно прилегает к кнопке, где он мне нужен, чтобы касаться внешнего края контейнера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...