动态更改Tab UIID在codenameone

时间:2016-01-27 10:20:18

标签: java 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,但是当我点击tab而不是坚持新的UIID样式时,它会重置以前的UIID样式。

2 个答案:

答案 0 :(得分:1)

标签不是按钮,而是RadioButtons。

如果要选择要应用的标签,则您的uiid Tab_button_error 应该选择要显示的样式,否则请选择未选择的样式。

应在标签容器上调用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++;
}

答案 1 :(得分:0)

Tab键按钮用于选择和取消选择两种不同的样式。这后来被合并,因此标签表现为单个切换按钮(单选按钮)但是剩下的一件事就是调用setUIID隐含地恢复原始" Tab"样式。因此,我们有效地调用Tab上的setUIID调用。

添加所有选项卡后,只需调用setTabUIID(null)即可禁用此行为。