GWT选项卡面板关闭

时间:2011-05-19 09:45:21

标签: gwt tabs

我正在GWT中构建一个应用程序。我有一个装饰的tabpanel 我的应用程序。在哪里动态添加面板。现在我想要 实现这些选项卡的关闭。我想添加一张贴图 标签栏和该图像的事件以便关闭。我正在使用UIbinder。

3 个答案:

答案 0 :(得分:6)

工作代码就是这样;

    private Widget getTabTitle(final Widget widget, final String title) {

    final HorizontalPanel hPanel = new HorizontalPanel();
    final Label label = new Label(title);
    DOM.setStyleAttribute(label.getElement(), "whiteSpace", "nowrap");

    ImageAnchor closeBtn = new ImageAnchor();
    closeBtn.setResource(images.cross());

    closeBtn.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent event) {
            int widgetIndex = tabs.getWidgetIndex(widget);
            if (widgetIndex == tabs.getSelectedIndex()) {
                tabs.selectTab(widgetIndex - 1);
            }
            tabs.remove(widgetIndex);               
        }
    });
    hPanel.add(label);
    hPanel.add(new HTML("&nbsp&nbsp&nbsp"));
    hPanel.add(closeBtn);
    hPanel.setStyleName("gwt-TabLayoutPanelTab");
    return hPanel;
}

要添加标签,

    public void addTab() {
    TabWriting tw = new TabWriting(); /* TabWriting in my case, this can be any widget */
    tabs.add(tw, getTabTitle(tw, "Writing"));
    tabs.selectTab(tw);
}

你将需要,ImageAnchorClass

public class ImageAnchor extends Anchor {

public ImageAnchor() {
}

public void setResource(ImageResource imageResource) {
    Image img = new Image(imageResource);
    img.setStyleName("navbarimg");
    DOM.insertBefore(getElement(), img.getElement(), DOM
            .getFirstChild(getElement()));
}}

答案 1 :(得分:0)

GWT本身不支持它。

您可以手动尝试添加它。

阅读本文 - http://groups.google.com/group/google-web-toolkit/browse_thread/thread/006bc886c1ccf5e1?pli=1

我没有亲自尝试过,但请看gregor(最后一个)的解决方案。

答案 2 :(得分:0)

你需要按照这个

的方式做点什么

GWT Close button in title bar of DialogBox

首先,您需要在创建新选项卡时传递选项卡标题。您传入的标题应包含标签文本以及要单击的X图像或文本标签。然后在close对象上添加一个事件处理程序,该处理程序将获取要添加到tabPanel的窗口小部件并将其删除。这是一些有效的内联代码

public void loadTab(final Widget widget, String headingText, String tooltip) {

        HorizontalPanel panel = new HorizontalPanel();
        panel.setStyleName("tabHeader");
        panel.setTitle(tooltip);
        Label text = new Label();
        text.setText(headingText);
        text.setStyleDependentName("text", true);
        Label close = new Label();
        close.setText("X");
        close.setTitle(closeText_ + headingText);
        text.setStyleDependentName("close", true);
        close.addClickHandler(new ClickHandler() {

            @Override
            public void onClick(ClickEvent event) {
                Window.alert("close this tab");
                ClientGlobal.LOG.info("widget : " + tabPanel_.getWidgetIndex(widget));
                tabPanel_.remove(tabPanel_.getWidgetIndex(widget));
            }
        });
        panel.add(text);
        panel.add(close);
        panel.setCellHorizontalAlignment(text, HasHorizontalAlignment.ALIGN_LEFT);
        panel.setCellHorizontalAlignment(close, HasHorizontalAlignment.ALIGN_RIGHT);

        tabPanel_.add(widget, panel);
        tabPanel_.getTabWidget(widget).setTitle(tooltip);
        tabPanel_.selectTab(widget);
    }