GWT

2010-01-04 4 views
6

İç içe geçmiş bir div nasıl oluşturulur GWT'ye iç içe geçmiş bir div almak ve orada bir widget yerleştirmek istiyorum. Böyle bir şey:GWT

<div id="container"> 
    <div id="content_left"> 
    </div> 
    ...other divs 
</div> 

Ben content_left almak ve orada bir widget koymak mümkün olmak istiyorum. Şimdiye kadar bütün RootPanel, etiketin içindeki divlardır. Ayrıca, DOM.getElementById (...) kullanmayı denedim ama add-add metodunun type parametresinde olması gereken giriş parametrelerini belirttiği için bir widget'ın nasıl yerleştirileceğini bilmiyorum.

Artık CSS ve konumlandırma hakkında pek bir şey bilmiyorum ve yukarıdaki stilleri yapmadım. Grafik tasarımcıdan aldığım bir şey. Sanırım bu, bir şeyleri dışarıda bırakma şekliydi. Zaten id = kapsayıcı ile div gibi bir dış div kullanmak zorunda kalmadan serme düşünmekteydim, bu yüzden ilk etapta bu sorunu olmazdı ama bu iyi bir fikir olup olmadığını duymak isterim.

cevap

2

GWT, bu tür şeyler için kapsayıcı widget'lar sağlar: Sizin için DIV'lerinizi oluştururlar ve bunları kendi kurallarına uygun olarak herhangi bir derinliğe yerleştirebilirsiniz. Hiçbir şey için açık DIV'leri kullanmanız gerekmez.

Sen

Şimdi CSS ve konumlandırma hakkında çok şey bilmiyorum ve ben yukarıdaki tasarımı yapmak gelmediğini söyledi.

GWT'nin konusu tam olarak budur: Gerek yoktur. GUI'nizi kod içinde bir araya getirin ve GWT'nin bunu CSS'ye nasıl çevireceği konusunda endişelenmesini sağlayın. İpucu: Bu çoğumuzun asla olamayacağından çok daha iyi. İnsanca mümkün olduğu kadar çapraz platform yapmak için pek çok bilinen tarayıcı tuhaflıkları için geçici çözümler var.

+1

Ancak web sayfasının mevcut tasarımı yuvalanmış div'larına çok fazla bağlıdır. Statik parçaları GWT'yi kullanmayı planladığım sitelerden ayıran web sayfasını onaylamasını söyleyeyim mi? – Jeune

+0

GWT, yüce hüküm sürdüğü bir içerik kökü alır: burada ve orada ayrı yerlerde GWT yapmanın bir konsepti yoktur. Belki başkasının başka bir fikri var ama mevcut tasarımınızı GWT ile iyi bir şekilde yapmanın bir yolunu görmüyorum. –

+0

Demek istediğim tasarım, grafiklerdi. GWT widget'ını yerleştirmek istediğim her yerdeler. Bu durumda, aynı zamanda id kabı ile div içinde de bulunuyorlar. Şimdi benim grafiklerimi de GWT'de HTML widget'ını kullanarak veya bir şekilde setStylePrimaryName kullanarak CSS kullanarak düzenlemem gerektiğini söylüyorsun? : D – Jeune

2

Sağladığınız HTML pasajı için belirli bir örnek, böyle bir şey olurdu. FlowPanels, onlara rastgele sayıların eklenmesini destekleyen divlardır. Eğer belirli bir divun sadece bir widget'ının olacağını biliyorsan, SimplePanel muhtemelen daha iyi bir seçim.

Yine de, ne yapmak istediğiniz, belirli bir DOM yapısını oluşturmak için GWT kodunu oluşturmak ve oluşturmak istediğiniz HTML'yi almaktır. Daha basit widget'larla nasıl başa çıkacağım konusunda iyi bir makale, tags first gwt. Eğer kaliteli düzen koduna üreten bir tasarımcı varsa

FlowPanel container = new FlowPanel(); 
container.setStyleName("container"); 

FlowPanel contentLeft = new FlowPanel(); 
contentLeft.setStyleName("content_left"); 
container.add(contentLeft); 

container.add(otherDivs); 


//elsewhere in your code: 
contentLeft.add(oneWidget); 
contentLeft.add(secondWidget); 
+0

Evet Bunu daha önce düşündüm ama bununla ilgili bir sorunum var, GWT modülü, özellikle bir RPC yapıyorum, tüm web sayfasından/statik parçalarından biraz sonra yüklenir aramak. – Jeune

+0

Teşekkürler dostum! Cevabınız bana çok fazla sorun yarattı! – SexyBeast

1

, sen ancak tüm risk ve uyumluluk sorunları farkında ve bakım veya test ettiğinizden kapasiteye sahip değiliz yalnızca kullanmalısınız. .

Im son derece verimli bu yaklaşımı bulma bütün bunları varsayarsak ..

yalnızca programlı ihtiyaç düzeninize temsil etmek First Class nesnelere takas dilek olarak Basitçe bir HTMLPanel'dir gelen widget'larınızı kurmak ve div'leri kullanmak kontrol

<g:HTMLPanel > 

      <div class="normal style classes {obfuscated.style.class}"> 
        <g:FlowPanel ui:field="programmaticPanel" stylePrimaryName="style"> 
          <g:HTMLPanel> 
            <p>CONTENT</p> 
          </g:HTMLPanel> 
        </g:FlowPanel> 
      </div> 

    </g:HTMLPanel > 

Ayrıca, gizlenmiş stillerinizi yine de vanilya/açıklık vb. Ile birlikte kullanabileceğinizi veya karıştırıp eşleştirebileceğinizi unutmayın!

0

Sen

<div id="container"> 
    <div id="content_left"> 
     <span id="qq"/> 
    </div> 
    ...other divs 
</div> 

için Ve kodu kullanılıyor sizin html değiştirme (veya değiştirmek için tasarımcı söylemek) olabilir:

FlowPanel panel = new FlowPanel(); 
RootPanel.get("qq").add(panel); 
panel.add(w1); 
panel.add(w2); 
...