Codenameone 以编程方式选择代号为One Tabs对象的选项卡
要以编程方式选择代号为One Tabs对象的选项卡,以下代码足够了:Codenameone 以编程方式选择代号为One Tabs对象的选项卡,codenameone,Codenameone,要以编程方式选择代号为One Tabs对象的选项卡,以下代码足够了: tabs.setSelectedIndex(tabToSelect, true); 问题是,此代码选择想要的选项卡,但它不会水平滚动tabs buttons容器以使选项卡名称可见(如果由于有许多选项卡而不可见)。注意,我正在使用主题常量tabsGridBool:false 由于这个问题,我试图解决: tabs.setSelectedIndex(tabToSelect, true); tabs.scrollComponentT
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侦听器,而不是延迟,该侦听器应在中的转换完成后调用。