2010-03-02 3 views
5

현재 SmartGWT로 작업 중이며 gwt Standard VerticalPanel과 같은 패널을 스마트 GWT 창에 포함시키는 방법을 얻으려고합니다. VerticalPanel 이유는 내가 예를 들어, 전체 내용을-다시 설정하지 않고 verticalpanel 객체에 위젯을 추가 할 수 있다는 것입니다 :HTML을 HTMLPane에 첨부하는 SmartGWT

이제
HTMLPane hPaneObj = new HTMLPane(); 
hPaneObj.setContents("Foo"); 

나는 단지 내가 할 수있는 것을 알 수 있습니다 추가 할 :

hPaneObj.setContents(hPaneObj.getContents() + "Bar"); 

내가 필요한 것은 아닙니다.

VerticalPanel을 추가 한 후에 문제가 발생합니다. 매개 변수로 true라는 'setCanSelectText'메서드가있는 경우에도 창 내에서 텍스트를 선택할 수 없습니다. 나는 아주 HTMLPane 날 전체 내용을 재설정하지 않고 추가하는 것을 허용하지 않습니다 그러나 놀라게하고

public void onModuleLoad() { 
    Window theWindow = new Window(); 
    theWindow.setTitle("Good evening"); 
    theWindow.setWidth(500); 
    theWindow.setHeight(500); 
    theWindow.setCanSelectText(true); 

    VerticalPanel vp = new VerticalPanel(); 
    vp.add(new HTML("foo")); 
    vp.add(new HTML("bar")); 
    theWindow.addItem(vp); 
    Canvas canvas = new Canvas(); 
    canvas.addChild(theWindow); 
    canvas.draw(); 
} 

: 아래는 내가 함께 넣어 간단한 예입니다.

그러나 모든 조언은 패널에 추가 할 수 있어야합니다. 나는 수직 패널을 사용하는 것을 좋아하지 않지만, 앞서 언급 한 것을 허용하거나 수직 패널에 접근 할 수 있도록 허용하는 방법, 즉 텍스트를 선택하는 방법을 찾아야합니다.

많은 감사합니다.

크리스토퍼.

답변

1

VerticalPanel은 콘텐츠를 만들기 위해 html table을 사용하며,이 경우에는 원하는 내용이 아닐 가능성이 큽니다. 일반적으로 HTML에서는 자연과 같은 XML 때문에 기존 콘텐츠 외에 일반 HTML을 추가 할 수 없습니다. 예를 들어 다음과 같은 html을 사용하는 경우 <div>some text</div> 텍스트를 추가하려면 추가 할 점이 div 태그에 상대적이어야하며, 전체 텍스트를 다시 삽입하지 않고 sometext 사이에 예를 들어 추가 할 수 없습니다. 귀하의 경우에는

당신의 (a div 인) FlowPanel를 사용하고 (A span으로 HTML을 래핑하는) InlineHTML으로 HTML을 추가 할 수 있습니다. span을 포장하지 않으려면 HTMLPane 예와 같이 텍스트를 다시 삽입해야합니다.

+0

감사합니다, 나는 스마트 GWT 웹 사이트에 질문에 해결책을 발견했다. http://forums.smartclient.com/showthread.php?p=39351#post39351 – Christopher

1

전체적으로 (헤더와 아이콘을 포함하여) 올바른 장소가 아닌 올바른 장소에 canSelectText를 설정해야하지만 선택이 허용되는 요소 바로 위에 있어야합니다.

그래서 두 가지 옵션 : 당신이 SmartGWT 컨테이너에 일반 GWT 위젯을 추가 할 때 그것이 WidgetCanvas와 함께 자동 포장의

1). 직접 랩핑하고 WidgetCanvas에서 setCanSelectText()를 수행 할 수 있습니다.

http://www.smartclient.com/smartgwtee/javadoc/com/smartgwt/client/widgets/WidgetCanvas.html

2) 서브 캔버스 getInnerHTML를 오버라이드() 공지 된 ID와 DIV 또는 다른 요소를 리턴하고 그 콘텐츠의 조작 GWT의 저레벨 DOM 조작 API를 사용한다.

+0

나는이 질문을 Smart GWT 웹 사이트에서 물었고 정확한 답변을 통해 저에게 답변을 받았습니다. 만약 당신이 'isomorphic'사용자라면 도움을 주셔서 감사합니다. – Christopher

+0

어쨌든 고맙습니다! 나는 그곳에 대한 당신의 반응에 대해 배은 척했지만 그 의도는 전혀 아니 었습니다. :) – Christopher

+0

그건 공유 계정이지만, 그렇습니다. 저 시간이었습니다. 여기에 답을 아무런 문제없이 올바른 것으로 표시하도록 다치게하지 마십시오. :) –