Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Codenameone 以编程方式选择代号为One Tabs对象的选项卡_Codenameone - Fatal编程技术网

Codenameone 以编程方式选择代号为One Tabs对象的选项卡

Codenameone 以编程方式选择代号为One Tabs对象的选项卡,codenameone,Codenameone,要以编程方式选择代号为One Tabs对象的选项卡,以下代码足够了: tabs.setSelectedIndex(tabToSelect, true); 问题是,此代码选择想要的选项卡,但它不会水平滚动tabs buttons容器以使选项卡名称可见(如果由于有许多选项卡而不可见)。注意,我正在使用主题常量tabsGridBool:false 由于这个问题,我试图解决: tabs.setSelectedIndex(tabToSelect, true); tabs.scrollComponentT

要以编程方式选择代号为One Tabs对象的选项卡,以下代码足够了:

tabs.setSelectedIndex(tabToSelect, true);
问题是,此代码选择想要的选项卡,但它不会水平滚动tabs buttons容器以使选项卡名称可见(如果由于有许多选项卡而不可见)。注意,我正在使用主题常量
tabsGridBool:false

由于这个问题,我试图解决:

tabs.setSelectedIndex(tabToSelect, true);
tabs.scrollComponentToVisible(tabs.getTabsContainer().getComponentAt(tabToSelect));

但它不起作用。选择选项卡及其按钮的正确方法是什么?谢谢

我试过这个,它对我有效,可能是操作顺序:

Form hi = new Form("Tabs", new BorderLayout());
Tabs t = new Tabs();
hi.add(CENTER, t);

for(int iter = 1 ; iter < 20 ; iter++) {
    t.addTab("Tab " + iter, FontImage.MATERIAL_ACCESS_ALARM, 4, new Label("Tab " + iter));
}

Button test = new Button("Test");
test.addActionListener(e -> {
    t.getTabsContainer().getComponentAt(18).requestFocus();
    t.setSelectedIndex(18, true);
});
hi.add(SOUTH, test);
hi.show();
Form hi=新表单(“选项卡”,新边框布局());
制表符t=新制表符();
hi.add(中心,t);
用于(国际热核试验堆=1;国际热核试验堆<20;国际热核试验堆++){
t、 添加标签(“标签”+iter,FontImage.MATERIAL\u ACCESS\u ALARM,4,新标签(“标签”+iter));
}
按钮测试=新按钮(“测试”);
test.addActionListener(e->{
t、 getAbsContainer().getComponentAt(18.requestFocus();
t、 设置选定的索引(18,真);
});
hi.add(南部,测试);
嗨,show();

谢谢,在这种情况下,
requestFocus
有效,而
scrollToVisible
无效。然而,为了在我的应用程序中解决这个问题,我需要将
requestFocus
(使用计时器)延迟100毫秒,否则它将无法工作。请注意,我在更改选项卡之前立即更改了表单,这可能是需要延迟的原因。请尝试在表单上使用show侦听器,而不是延迟,该侦听器应在中的转换完成后调用。