【发布时间】:2011-07-04 15:17:52
【问题描述】:
如何在 TabLayoutPanel 中禁用选项卡(即用户单击时无法打开选项卡)?我在网上搜索但无法找到解决方案
谢谢
【问题讨论】:
如何在 TabLayoutPanel 中禁用选项卡(即用户单击时无法打开选项卡)?我在网上搜索但无法找到解决方案
谢谢
【问题讨论】:
TabLayoutPanel myPanel = new TabLayoutPanel();
// Add children...
myPanel.addBeforeSelectionHandler(new BeforeSelectionHandler<Integer>() {
@Override
public void onBeforeSelection(BeforeSelectionEvent<Integer> event) {
// Simple if statement - your test for whether the tab should be disabled
// will probably be more complicated
if (event.getItem() == 1) {
// Canceling the event prevents the tab from being selected.
event.cancel();
}
}
});
如果您希望禁用的标签与启用的标签不同,您可以使用TabLayoutPanel#getTabWidget 获取标签小部件并为其添加样式名称。
【讨论】:
对于以后遇到此问题的任何人:
从 GWT 1.6 版开始,禁用/启用选项卡已内置到 GWT 中。
TabBar 类有一个方法 setTabEnabled(int index, boolean enabled) 可以启用/禁用给定索引处的选项卡。
例如,禁用 TabPanel 中的所有选项卡:
TabPanel myTabPanel = new TabPanel();
// Add children
TabBar tabBar = myTabPanel.getTabBar();
for(int i=0; i<tabBar.getTabCount(); i++) {
tabBar.setTabEnabled(i, false);
}
请参阅GWT javadoc 了解更多信息。
为禁用的标签设置不同的样式(GWT 会自动执行此操作,但如果您想更改样式):禁用的tabBarItem div 被赋予另一个 CSS 类:gwt-TabBarItem-disabled。
【讨论】:
TabLayoutPanel 类型,而不是TabBar。
TabLayoutPanel 包含一个TabBar!那是位于TabLayoutPanel 顶部的部分,其中包含选项卡。您可以使用myTabLayoutPanel.getTabBar() 访问TabLayoutPanel 的TabBar(请参阅我的答案)。我已经更新了我的答案以使这一点更清楚。
getTabBar 类型上没有 getTabBar 方法。也许你的意思是TabPanel?
TabPanel。我已经更正了我的代码。
您可以通过将类Tab 转换为Widget 来访问标签样式
TabPanel tabPanel = new TabPanel();
((Widget)tabPanel().getTabBar().getTab(tabsToDisable.iterator().next())).addStyleName("disabled");
【讨论】: