[英]Handling click event on SmartGWT RibbonBar
I have a ribbonBar with 4 Button on it. 我有一个RibbonBar,上面有4个按钮。 Now on each of the button clicked I want to perform some action. 现在,在每个按钮上单击后,我要执行一些操作。 But the problem I have is how do I get to know which button is clicked. 但是我的问题是如何知道单击了哪个按钮。 Can somebody guide me.Below is my code and screenshot. 有人可以指导我吗?下面是我的代码和屏幕截图。 By the way I am using Button instead of the IconButton as shown in the showcase.is it OK if i use this button??. 顺便说一句,我正在使用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;
}
Untested, but I think something like this is what you want: 未经测试,但我认为您想要的是这样的东西:
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;
}
}
or really if you always know it will be a Button
just cast event.getSource()
to a Button
, then you can get the button title like ((Button)event.getSource()).getTitle()
还是真的,如果你总是知道这将是一个Button
只投event.getSource()
的Button
,然后就可以得到按钮标题像((Button)event.getSource()).getTitle()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.