2016-06-24 4 views
0

私は、この場所のshapei(onClickによって作成された)ウィジェットを使用する必要があります:public void onElementConnect(ElementConnectEvent event) {}....if(connected.equals(**shapei**.connectedWidget)){。どうすればこの問題を解決できますか?誰かが私を助けることができるなら、それは素晴らしいだろう!gwt:別のイベントでonClickによって作成されたウィジェットを使用するには?

public class Projekt implements EntryPoint { 

    private RootPanel rootPanel; 

    public void onModuleLoad() { 

     rootPanel = RootPanel.get("gwtContainer"); 
     rootPanel.setSize("1902", "868"); 

     final AbsolutePanel boundaryPanel = new AbsolutePanel(); 
     boundaryPanel.setStyleName("frame1"); 
     boundaryPanel.setSize("1455px", "600px");  

     final Diagram diagram = new Diagram(boundaryPanel); 

     RootPanel.get().add(boundaryPanel, 446, 242); 

     final Connector con = new Connector(100, 300, 300, 500); 

     Button la = new Button("Push"); 
     la.setSize("200", "200"); 
     boundaryPanel.add(la); 

     Button la2 = new Button("Push2"); 
     la2.setSize("200", "200"); 
     boundaryPanel.add(la2); 

     Image img2 = new Image("images/variable.svg"); 
     img2.setSize("200", "200"); 
     boundaryPanel.add(img2, 200,200); 

     final Shape shapei2 = new Shape(img2); 
     shapei2.showOnDiagram(diagram); 

     la.addClickHandler(new ClickHandler(){ 

      @Override 
      public void onClick(ClickEvent event) { 
       final Image img = new Image("images/concrete.svg"); 
       img.setSize("200", "200"); 
       boundaryPanel.add(img, 200,200); 
       Shape shapei = new Shape(img); 
       shapei.showOnDiagram(diagram);} 

      public void onElementConnect(ElementConnectEvent event) { 
         if (con.startEndPoint.isGluedToConnectionPoint()) { 
          Widget connected = con.startEndPoint.gluedConnectionPoint.parentWidget; 
          if(connected.equals(shapei.connectedWidget)){ 
         Image logo = new Image("images/xor.svg"); 
         logo.setSize("100", "100"); 
         boundaryPanel.add(logo); 
         } 
          else if(connected.equals(shapei2.connectedWidget)){ 
           Image logo2 = new Image("images/and.svg"); 
          logo2.setSize("100", "100"); 
          boundaryPanel.add(logo2); 
          }; 
        }} 

      } 

     ); 
     la2.addClickHandler(new ClickHandler(){ 

       @Override 
       public void onClick(ClickEvent event) { 

        con.showOnDiagram(diagram); 
       } 

      }); 




}} 

答えて

0

あなたは匿名のコールバックメソッドの外shapeiの宣言を移動する必要があります推奨オプション

:ここでは完全なコードです。 onClickメソッドが完了すると、参照は範囲外になります。宣言をグローバルスコープに移動すると、他のメソッドでその宣言にアクセスできます。 EntryPointクラスbtwですべてを行うのではなく、外部クラスにビューパーツを移動すると、これは奇妙に見えません。あなたは、DiagramActivityと呼ばれる単純なアクティビティのようなものを使うことができます。エントリポイントでは、単にアクティビティのstartを呼び出します。

パブリッククラスPROJEKTはエントリーポイント{

private RootPanel rootPanel; 

Shape shapei; 

public void onModuleLoad() { 
    .... 
} 

別のオプション あなたがDOMに追加する場合は、DocumentクラスまたはGwtQueryを使用してそれを見ることができますを実装しています。しかし、これははるかに遅くすることができます。

関連する問題