簡體   English   中英

在SmartGWT RibbonBar上處理單擊事件

[英]Handling click event on SmartGWT RibbonBar

我有一個RibbonBar,上面有4個按鈕。 現在,在每個按鈕上單擊后,我要執行一些操作。 但是我的問題是如何知道單擊了哪個按鈕。 有人可以指導我嗎?下面是我的代碼和屏幕截圖。 順便說一句,我正在使用Button而不是展示櫃中所示的IconButton。如果我使用此按鈕可以嗎?

在此處輸入圖片說明

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

未經測試,但我認為您想要的是這樣的東西:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM