2016-01-27 3 views
1

Я использую вкладку в одной из форм.Динамическое изменение вкладки UIID не работает должным образом в codenameone

Если произошла ошибка при сохранении формы, цвет вкладки должен измениться.

код я использовал, как показано ниже:

for(Integer tabIndex: errorTabIndex){ 
if(index==0){ 
    tabs.setSelectedIndex(tabIndex); 
} 
Button c = (Button) tabs.getTabsContainer().getComponentAt(tabIndex); 
c.setUIID("Tab_button_error"); 
c.repaint(); 
index++; 
} 

Этот код устанавливается новый UIID, но когда я нажимаю на вкладке, то вместо палки по новому стилю UIID, это сбросить предыдущий стиль UIID.

+0

Добавлен ярлык java для подсветки синтаксиса –

ответ

0

Кнопки вкладок имели два отдельных стиля для выбранных и невыделенных. Позднее это было объединено, так что вкладки ведут себя как одна кнопка переключения (переключатель), но одна вещь, оставшаяся, - это вызов setUIID, который неявно сделан для восстановления оригинального стиля «Tab». Поэтому мы эффективно вызываем вызов setUIID на вкладке.

Для того, чтобы отключить эту возможность, добавьте все закладки, только setTabUIID(null).

1

Вкладки не являются кнопками, а RadioButtons.

Ваш uiid Tab_button_error должен иметь выбранный стиль, который вы хотите отобразить, если выбрана вкладка, к которой он будет применен, в противном случае используйте стиль Unselected.

Метод repaint() или revalidate() следует вызывать в контейнере таблеток, а не в RadioButtons.

Используйте инспектор компонентов, чтобы проверить, в каком состоянии находятся ваши вкладки RadioButtons и какой UIID они переносят.

for(Integer tabIndex: errorTabIndex) { 
    if(index==0) { 
     tabs.setSelectedIndex(tabIndex); 
    } 
    RadioButton radTab = (RadioButton) tabs.getTabsContainer().getComponentAt(tabIndex); 
    radTab.setUIID("Tab_button_error"); 
    tabs.getTabsContainer().repaint(); 
    index++; 
} 
Смежные вопросы