【问题标题】:Dynamically change Tab UIID not working properly in codenameone动态更改选项卡 UIID 在代号中无法正常工作
【发布时间】:2016-01-28 11:48:25
【问题描述】:

我正在使用其中一种形式的标签。

如果在保存表单时发生任何错误,那么标签颜色应该会改变。

我使用的代码如下:

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 样式。

【问题讨论】:

  • 为语法高亮添加了java标签

标签: java codenameone


【解决方案1】:

选项卡不是按钮,而是单选按钮。

您的 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++;
}

【讨论】:

    【解决方案2】:

    标签按钮曾经有两种不同的样式用于选中和未选中。这后来被合并,因此选项卡表现为单个切换按钮(单选按钮),但剩下的一件事是对 setUIID 的调用,它隐含地用于恢复原始的“选项卡”样式。因此,我们在 Tab 上调用 setUIID 非常有效。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多