2016-06-21 6 views
0

다음 코드를 실행하고 "푸시"버튼을 두 번 이상 누르면 "simplePanel에 하나의 하위 위젯 만 포함 할 수 있습니다"라는 브라우저 오류가 발생합니다. 어떻게 그 문제를 해결할 수 있습니까? 미리 감사드립니다! JogiSimplePanel에는 하나의 하위 위젯 만 포함 할 수 있습니다.

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"); 
     RootPanel.get().add(la); 

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

     final Image img = new Image("images/concrete.svg"); 
     img.setSize("200", "200"); 


     final Shape shapei = new Shape(img); 


     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) { 
       boundaryPanel.add(img, 100,100); 
       shapei.showOnDiagram(diagram); 
      } 

     }); 
     la2.addClickHandler(new ClickHandler(){ 

       @Override 
       public void onClick(ClickEvent event) { 

        con.showOnDiagram(diagram); 
       } 

      }); 


     diagram.addDiagramListener(new DiagramListenerAdapter() { 

       @Override 
       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); 
        }; 
       }} 
      }); 

}} 

답변

0

나는 당신의 다이어그램은 GWT의 는 SimplePanel 클래스를 확장 가정? 추가하기 전에 기존의 위젯을 제거하는 방법

http://www.gwtproject.org/javadoc/latest/com/google/gwt/user/client/ui/SimplePanel.html

당신은 다른 클래스를 확장하거나 (W 위젯)을 제거를 호출 할 수 있습니다 중 하나는 SimplePanel 여기 봐, 단 하나의 위젯을 포함 할 수 있습니다 새로운 것.

+0

다이어그램은 absolutePanel이며 내가 필요하기 때문에 위젯을 제거 할 수 없습니다 :( – Jogi

0

RootPanel.get()은 SimplePanel입니다. 둘 이상의 자식을 추가하려고하면이 오류가 발생합니다.

대신 HTMLPanel을 RootPanel에 추가 한 다음이 HTMLPanel에 모든 자식을 추가해야합니다.

+0

음 ...하지만 나는 위젯을 RootPanel에 추가하지 않고 boundaryPanel에 추가합니다. (AbsolutePanel)이며 RootPanel의 자식입니다? I – Jogi

+0

자신의 코드를보세요 :'RootPanel.get(). add (la);','RootPanel.get(). add (la2);'. –

+0

Ohhhh! Thank you :) – Jogi

0

아마도 내 초기화에 문제가 있습니까? 내가 clickevent 내부에서 이렇게하면 오류가 발생하지 않습니다. 하지만 그때 내 diagramlistener를 사용할 수 없습니다 ...

+0

이것은 답변이 아니라 주석이어야합니다. –