2010-03-02 13 views
5

HTMLPane eklemeden. VerticalPanel nedeni ben örneğin, tüm içeriği yeniden ayarlamak zorunda kalmadan verticalpanel nesnesine widget'lar eklemek olmasıdır:SmartGWT HTML Şu anda SmartGWT ile çalışıyorum ve akıllı GWT penceresine böyle gwt Standart VerticalPanel olarak bir panel dahil bir yolunu elde etmek için çalışıyorlar

Şimdi
HTMLPane hPaneObj = new HTMLPane(); 
hPaneObj.setContents("Foo"); 

Sadece benden olduğunu görebilir eklemek için:

ihtiyacım ne değildir
hPaneObj.setContents(hPaneObj.getContents() + "Bar"); 

.

Sorun VerticalPanel ekledikten sonra, ben bile parametre olarak true ile adlandırılan 'setCanSelectText' yöntemi ile pencere içinde herhangi bir metin seçemezsiniz doğar. Oldukça HTMLPane beni tüm içeriğini sıfırlamadan eklenecek izin vermez ancak Im'sürpriz

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(); 
} 

: Aşağıda araya getirdiğim kısa bir örnektir.

Herhangi bir tavsiye bir panele 'ekleme' muktedir yapmak gerekir ancak mutluluk duyacağız. Dikey bir panel kullanma fikrini özellikle beğenmemekle birlikte, yukarıda bahsi geçenlere izin vermek veya dikeypanelin erişilebilir olmasına izin vermek için bir yöntem bulmam gerekiyor, yani metni seçiyorum.

çok teşekkürler

Christopher.

cevap

1

VerticalPanel, içeriği oluşturmak için büyük olasılıkla bir html table kullanır ve büyük olasılıkla bu durumda istediğiniz bir şey değildir. Genel olarak, HTML'de, xml benzeri doğa nedeniyle mevcut içeriğe ek olarak düz HTML eklemek mümkün değildir. Örneğin, aşağıdaki html <div>some text</div>'a sahipseniz. Metin eklemek isterseniz, eklenecek noktanın div etiketine göre olması gerekir, örneğin some ve text arasında, tüm metni yeniden eklemeden bir şey eklemek mümkün değildir. Senin durumunda

Eğer (bir div olan) FlowPanel kullanmak ve (a span ile HTML sarar olan) InlineHTML ile HTML eklemek isteyebilirsiniz. Eğer span size HTMLPane örnekte olduğu gibi metni yeniden takın olurdu sarılmış istemiyoruz.

+0

Sağol, ben akıllı GWT web sitesinde soran üzerine çözüm buldu. http://forums.smartclient.com/showthread.php?p=39351#post39351 – Christopher

1

CanSelectText öğesinin doğru yerde, bir bütün olarak (başlıkları ve simgeleri içerecek şekilde) Pencerede değil, yalnızca seçimin yapılabildiği öğede olması gerekir.

Yani iki seçenek: Bir SmartGWT kaba düz bir GWT widget eklemek zaman bir WidgetCanvas ile otomatik sarılmış bulunuyor

1). WidgetCanvas'ta kendiniz ve setCanSelectText() öğesini paketleyebilirsiniz.

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

2) alt kumaş ve getInnerHTML() geçersiz kılar bilinen bir kimlik ile DIV ya da başka eleman geri ve sonra da onun içeriği işlemek için Gwt düşük seviyeli DOM işleme API'leri kullanımı.

+0

Bu soruyu Smart GWT web sitesinde sordum ve tam yanıtla orada benim için yanıtlandı. Eğer 'isomorphic' kullanıcısıysanız, yardım için teşekkür ederim. – Christopher

+0

Yine de teşekkürler! Cevabınız için biraz nankör ses çıkarmış olabilirim ama niyet hiç de değildi. :) – Christopher

+0

Bu paylaşılan bir hesap, ama evet o zaman bendim. Buradaki cevabı doğru gözetmeksizin incitmek zarar vermez :) –