【问题标题】:GWT Tab panel closeGWT 选项卡面板关闭
【发布时间】:2011-05-19 09:45:20
【问题描述】:

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

【问题讨论】:

    标签: gwt tabs


    【解决方案1】:

    工作代码是这样的;

        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()));
    }}
    

    【讨论】:

      【解决方案2】:

      GWT 本身不支持它。

      您可以手动尝试添加。

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

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

      【讨论】:

      • @jay Welcome :) 如果您能将此标记为正确答案,那就太好了!
      【解决方案3】:

      你有点需要按照这个思路做一些事情

      GWT Close button in title bar of DialogBox

      首先,您需要在创建新选项卡时传入选项卡标题。你传入的标题应该有你的标签文本,还有一个 X 图像或文本标签可以点击。然后在关闭对象上添加一个事件处理程序,该对象获取您添加到 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);
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        • 1970-01-01
        • 2015-10-20
        相关资源
        最近更新 更多