2009-11-14 24 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