2015-03-03 90 views
0

我有一個帶有4個按鈕的ribbonBar。現在在每個按鈕上點擊我想執行一些操作。但是我的問題是如何才能知道哪個按鈕被點擊。有人可以指導我。以下是我的代碼和截圖。順便說一句,我使用Button而不是IconButton,如showcase.is所示,如果我使用這個按鈕,那麼OK。在SmartGWT RibbonBar上處理點擊事件

enter image description here

public class DBilling implements EntryPoint 
{ 

@Override 
public void onModuleLoad() 
{ 
    VLayout vLayout = new VLayout(); 
    vLayout.setWidth100(); 

    RibbonBar ribbonBar = new RibbonBar(); 
    ribbonBar.setLeft(0); 
    ribbonBar.setTop(0); 
    ribbonBar.setWidth100(); 

    ribbonBar.setMembersMargin(2); 
    ribbonBar.setLayoutMargin(2); 

    RibbonGroup orderGroup = new RibbonGroup(); 
    orderGroup.setTitle("New Order"); 
    orderGroup.setRowHeight(60); 
    orderGroup.addControl(getButton("Order", "order", false)); 

    RibbonGroup reportGroup = new RibbonGroup(); 
    reportGroup.setTitle("Report"); 
    reportGroup.setRowHeight(60); 
    reportGroup.addControl(getButton("Report", "report", false)); 

    RibbonGroup productGroup = new RibbonGroup(); 
    productGroup.setTitle("New Product"); 
    productGroup.setRowHeight(60); 
    productGroup.addControl(getButton("Product", "cookies", false)); 

    RibbonGroup systemGroup = new RibbonGroup(); 
    systemGroup.setTitle("System"); 
    systemGroup.setRowHeight(60); 
    systemGroup.addControl(getButton("System", "system", false)); 

    ribbonBar.addMember(orderGroup); 
    ribbonBar.addMember(reportGroup); 
    ribbonBar.addMember(productGroup); 
    ribbonBar.addMember(systemGroup); 

    vLayout.addChild(ribbonBar); 
    vLayout.draw(); 

} 

private Button getButton(String title, String iconName, boolean vertical) 
{ 
    final Button cssButton = new Button(title); 
    cssButton.setShowRollOver(true); 
    cssButton.setShowDisabled(true); 
    cssButton.setShowDown(true); 
    cssButton.setIcon(iconName + ".png"); 
    cssButton.setIconSize(32); 
    cssButton.setWidth(120); 
    cssButton.addClickHandler(new ClickHandler() 
    { 

     @Override 
     public void onClick(ClickEvent event) 
     { 

      SC.say(event.getSource().toString()); 
     } 
    }); 

    return cssButton; 
} 

回答

1

未經檢驗的,但我覺得這樣的事情是你想要什麼:

public class DBilling implements EntryPoint 
{ 

    private RibbonBar ribbonBar; 

    @Override 
    public void onModuleLoad() 
    { 
     VLayout vLayout = new VLayout(); 
     vLayout.setWidth100(); 

     this.ribbonBar = new RibbonBar(); 
     this.ribbonBar.setLeft(0); 
     this.ribbonBar.setTop(0); 
     this.ribbonBar.setWidth100(); 

     this.ribbonBar.setMembersMargin(2); 
     this.ribbonBar.setLayoutMargin(2); 

     RibbonGroup orderGroup = new RibbonGroup(); 
     orderGroup.setTitle("New Order"); 
     orderGroup.setRowHeight(60); 
     orderGroup.addControl(getButton("Order", "order", false)); 

     RibbonGroup reportGroup = new RibbonGroup(); 
     reportGroup.setTitle("Report"); 
     reportGroup.setRowHeight(60); 
     reportGroup.addControl(getButton("Report", "report", false)); 

     RibbonGroup productGroup = new RibbonGroup(); 
     productGroup.setTitle("New Product"); 
     productGroup.setRowHeight(60); 
     productGroup.addControl(getButton("Product", "cookies", false)); 

     RibbonGroup systemGroup = new RibbonGroup(); 
     systemGroup.setTitle("System"); 
     systemGroup.setRowHeight(60); 
     systemGroup.addControl(getButton("System", "system", false)); 

     this.ribbonBar.addMember(orderGroup); 
     this.ribbonBar.addMember(reportGroup); 
     this.ribbonBar.addMember(productGroup); 
     this.ribbonBar.addMember(systemGroup); 

     vLayout.addChild(this.ribbonBar); 
     vLayout.draw(); 

    } 

    private Button getButton(String title, String iconName, boolean vertical) 
    { 
     final Button cssButton = new Button(title); 
     cssButton.setShowRollOver(true); 
     cssButton.setShowDisabled(true); 
     cssButton.setShowDown(true); 
     cssButton.setIcon(iconName + ".png"); 
     cssButton.setIconSize(32); 
     cssButton.setWidth(120); 
     cssButton.addClickHandler(new ClickHandler() 
     { 

      @Override 
      public void onClick(ClickEvent event) 
      { 
       RibbonBar a; 
       for(Canvas b : a.getMembers()){ 
        RibbonGroup c=(RibbonGroup)b; 
        for(Canvas d : c.getControls()){ 
         Button e = (Button)d; 
         if(e.equals(event.getSource())) 
          SC.say(e.getTitle()); 
        } 
       } 

       SC.say(event.getSource().toString()); 
      } 
     }); 

     return cssButton; 
    } 

} 

還是真的,如果你總是知道這將是一個Button只投event.getSource()Button,那麼你可以得到按鈕標題,如((Button)event.getSource()).getTitle()

+0

非常感謝您的幫助! – ZAJ 2015-03-07 05:24:44