2011-05-19 42 views
4

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

回答

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

你还挺需要做沿着这

东西线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); 
    }