2015-07-15 2 views
0

У меня есть экземпляр TabLayoutPanel, где число вкладок будет задано динамически. Поэтому для выравнивания вкладок для заполнения всей ширины экрана мне нужноУстановите css из GWT (динамически) в элемент с несколькими связанными стилями

1) Переопределить значение ширины по умолчанию gwt-TabTayoutPanel 16384px с auto! Important (done);

2) Установить ширину GWT-TabTayoutPanel Tab надлежащему процентное значение (например, 2 вкладки = 50%. 3 вкладки = 33%, 4 таблетки = 25%, и так далее). У меня есть простая функция для того, что идет так (упрощенно):

Двойной cssValue = 100.0/getWidgetCount();

(сделано)

3) Теперь вот идет мой вопрос: как я могу установить ширину GWT-TabTayoutPanel Tab из Java? Я выделен жирным шрифтом Вкладки, потому что, когда я использую this.getStyleName();, я получил в ответ gwt-TabLayoutPanel не gwt-TabLayoutPanel Tab.

В общем, я могу разделить мой вопрос на два:

-как для доступа TabLayoutPanel Tab CSS класс от GWT ?;

-how установить указанную ширину класса с моим динамически сгенерированным процентом числа ?;

EDIT: Правильное редактирование функции для определения процентного значения.

ответ

1

-how для доступа к классу cssLayoutPanelTab css из GWT ?;

int widgetCount = panel.getWidgetCount(); 
for(int i = 0; i < widgetCount; i++) 
    System.out.println(panel.getTabWidget(i).getParent().getStyleName()); 
} 

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

-how установить указанную ширину класса с моим динамически сгенерированным процентом числа ?;

  • Если у вас есть определенное количество от возможных проценты, то вы можете объявить эти классы (например, заказ Ширина-25, изготовленный на заказ ширина-33 и т.д.), где можно указать ширину с !important аннотацию, чтобы переопределить все остальное.
  • Если предыдущее решение неприемлемо, вы можете использовать только встроенный css. Это означает, что элемент должен быть уже загружен в DOM. Где-то в вашем коде, где вы знаете, что элемент загружен вы можете назвать что-то вроде этого:
int widgetCount = panel.getWidgetCount(); 
for(int i = 0; i < widgetCount; i++) { 
    com.google.gwt.user.client.Element tabElement = panel.getTabWidget(i).getParent().getElement(); 
    tabElement.getStyle().setWidth(100/widgetCount, Unit.PCT); 
} 
+1

Спасибо за ответ! Моей модификацией было использовать тип Double: double cssWidth = 100.0/widgetCount(). Использование типа Core Integer устанавливает все вкладки немного влево, оставляя крошечный белый запас справа. С Double все вкладки элегантно центрированы (число сгенерировано: ширина: 33.3333%); – Johnny

+0

Я рад, что могу помочь, и вам приятно поделиться дополнительными деталями. Это может пригодиться кому-то в будущем. Повеселись. – alkis

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