有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java动态更改选项卡UIID在codenameone中无法正常工作

我正在其中一个表单中使用tab

如果在保存表单时发生任何错误,则应更改选项卡颜色

我使用的代码如下:

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) 个答案

  1. # 1 楼答案

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

    如果选择了要应用uiid的选项卡,则uiid选项卡按钮错误应已选择要显示的样式,否则将取消选择样式

    应该在tabs容器而不是单选按钮上调用repaint()revalidate()方法

    使用组件检查器检查选项卡单选按钮的状态以及它们携带的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. # 2 楼答案

    选项卡按钮用于为选定和未选定设置两种不同的样式。这一点后来得到了整合,因此选项卡的行为类似于单个切换按钮(单选按钮),但剩下的一件事是对setUIID的调用,该调用隐式地用于恢复原始的“选项卡”样式。因此,我们有效地调用了选项卡上的setUIID调用

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