获取应用tab页问题

image

如图,请问红框位置的内容信息如何获取,能不能全局都能拿到之类的

比如我打开一个平面可以去查询有没有已经开打的,或者是动态跳转到某一页,或者指定关闭等

用下面的方法获取 TabSheetBehaviour,然后就可以用来处理主窗口的 tab了

@Inject
private Screens screens;

@Subscribe
public void onInit(InitEvent event) {
    Screen rootScreen = screens.getOpenedScreens().getRootScreenOrNull();
    if (rootScreen != null) {
        Component workAreaComponent = rootScreen.getWindow().getComponent("workArea");
        if (workAreaComponent instanceof AppWorkArea) {
            TabSheetBehaviour tabSheet = ((WebAppWorkArea) workAreaComponent).getTabbedWindowContainer().getTabSheetBehaviour();
            //... 用 tabSheet 处理主窗口 tabs
        }
    }
}

@Inject
private AppWorkArea workArea;

2 个赞

容我试一下,谢谢

image

现在就是想获取一下当前选中 的tab页。。但是 一直获取不到 得到一个标识或者id就行 永远判断当前页面。。。

参考下面代码:

TabWindowContainer windowContainer = (TabWindowContainer) tabSheet.getSelectedTab();
List<com.vaadin.ui.Component> tabs = new ArrayList<>(); // 所有的 tabs
tabSheet.getTabComponents().forEachRemaining(tabs::add);

log.info(windowContainer.getBreadCrumbs().getCurrentWindow().getId()); // tab id
log.info("" + tabs.indexOf(windowContainer));// 当前选中的 tab index
tabSheet.setSelectedTab(tabs.get(0)); // 设置选中的 tab
1 个赞

感激不尽,技艺不精。。。这个写法我确实想不到。。。感谢解答!