2009-11-14 27 views
0

我有一个由文本框和自定义小部件组成的复合小部件,然后将其添加到verticalPanel。我使用Raphael JS创建了这个自定义小部件。ClickListener for Composite Widget

现在我想让这个Composite小部件识别单击事件和ctrl事件。我尝试在两个类中实现clicklistener,但没有结果。

这里是代码布局设计:

此类创建由拉斐尔JS自定义窗口小部件:

public class CustomShapeRet extends RaphaelJSWidget{ 

    public CustomShapeRet(){ 
     super(); 
     Rectangle r = new Rectangle(10, 10, 50, 20); 

     r.attr("stroke", "black"); 
     r.attr("stroke-width", "5"); 
    } 
} 

该类这里产生合成部件:

public class Test extends Composite{ 

    public Test(){ 
     TextBox t1 = new TextBox(); 
     t1.setSize("100px", "20px"); 
     t1.setText("Hi"); 
     t1.setTitle("textbox"); 

     CustomShapeRet r = new CustomShapeRet(); 
     r.setTitle("rec"); 

     VerticalPanel v1 = new VerticalPanel(); 
     v1.setStyleName("vertical"); 
     v1.add(r); 
     v1.add(t1);  
     initWidget(v1); 
    } 
} 

问题: 有没有办法让这个工作?你会推荐什么?

谢谢。

回答

0

如何将Composite换成FocusPanel而不是VerticalPanel? (你可以把VerticalPanel放在FocusPanel,如果你需要布局,但是要确保FocusPanel是你拨打initWidget的那个)然后你可以在该面板上添加一个ClickHandler,然后瞧。 FocusPanel也实现了HasAllKeyHandlers,这意味着你得到KeyDown/UpHandlers等。

1

你要实现你的“测试”复合widget.It将迫使你实现addClickHandler method.Then您可以添加clickHandler.You可以实现以下所有iterfaces HasClickHandler接口取决于你requirementHasAllFocusHandlers,HasAllKeyHandlers,HasAllMouseHandlers。如果你想添加点击listners为CustomShapeRet然后实现接口有also.For示例代码请看下面的线程:

How do I add MouseEvents to an AbsolutePanel?

试试看this.I不要有大约RaphaelJSWidget任何想法。

public class CustomShapeRet extends RaphaelJSWidget implements HasClickHandler{ 

public CustomShapeRet(){ 
    super(); 
    Rectangle r = new Rectangle(10, 10, 50, 20); 

    r.attr("stroke", "black"); 
    r.attr("stroke-width", "5"); 
} 

    public HandlerRegistration addMouseOutHandler(MouseOutHandler handler) { 
     return addDomHandler(handler, MouseOutEvent.getType()); 
    } 
} 

我假设你RaphelJSWidget类扩展的Widget class.If这是真的,你可以添加点击handler.It应该工作。

+0

RaphaelJSWidget是一个将底层Raphael JavaScript转换为Widget的类。我需要绘制形状,因此我正在使用这个。我从水电项目中获得了这个想法。这里是链接:http://googlewebtoolkit.blogspot.com/2009/09/hydro4ge-paas-built-with-gwt.html 现在我相信我面临的问题是因为这个raphael,因为我不知道关于如何将鼠标事件添加到raphael画布。有什么建议么? 谢谢。 – suprasad

+0

谢谢。是的,我有RaphelJSWidget类扩展Widget,但由于某种原因,它不工作。 – suprasad