2010-03-22 15 views
8
... 
<g:VerticalPanel styleName="{style.mainVerticalPanel}"> 
    <g:SplitLayoutPanel> 
    <g:north size="700"> 
     <g:VerticalPanel> 
       <g:ScrollPanel styleName="{style.conversationPanelContainer}"> 
        <g:FlexTable ui:field="conversationPanel" styleName="{style.conversationPanel}"></g:FlexTable> 
       </g:ScrollPanel> 
       <g:HorizontalPanel styleName="{style.messageTextAndSendPanel}"> 
        <g:TextBox ui:field="messageText" styleName="{style.messageText}"></g:TextBox><g:Button ui:field="sendButton">Send</g:Button> 
       </g:HorizontalPanel> 
     </g:VerticalPanel> 
    </g:north> 
    <g:south size="300"> 
    <g:button>TestButton</g:button> 
    </g:south> 
    </g:SplitLayoutPanel> 
</g:VerticalPanel> 
... 

Bu bir sorun mu var? Yapmaya çalıştığım tek şey basit bir bölünmüş panel yapmaktır, ancak bunu her çalıştırdığımda boş bir sayfa olur. SplitPanel öğelerinden herhangi biri olmadan, iyi çalışıyor. Aynı şey DockLayoutPanel ile olur.SplitLayoutPanel çalışmıyor - GWT + UIBinder beni çıldırtıyor

+0

İstisna yok mu? (hem DevMode'da hem de Firebug/diğer tarayıcı konsolu'nda) –

+0

Şu an iş bilgisayarımdan uzaktayım, bu yüzden kesin bir şey söyleyemem ama bazı RPC çağrılarının Firebug konsolu penceresinde gönderilmesini gördüm (I). UI eksikliğine rağmen, her x dakika yürüten bir RPC çağrısı var. İstisnalar olsaydı hiçbir şey olmazdı, değil mi? –

cevap

7

Tamam bkz yaşlı (bkz çalışma var önceki girişimler için bu cevabın sürümleri;)).

Benim çözümüm Mail example dayanmaktadır. çalışma kodu:

public class SplitTest implements EntryPoint { 

    private static TestUiBinder uiBinder = GWT.create(TestUiBinder.class); 

    interface TestUiBinder extends UiBinder<SplitLayoutPanel, SplitTest> { 
    } 

    /** 
    * This is the entry point method. 
    */ 
    public void onModuleLoad() { 
     SplitLayoutPanel outer = uiBinder.createAndBindUi(this); 

     RootLayoutPanel.get().add(outer); 
    } 
} 

UiBinder * .ui.xml:

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> 
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
    xmlns:g="urn:import:com.google.gwt.user.client.ui"> 
    <ui:style> 
    .conversationPanelContainer, .conversationPanel, .messageTextAndSendPanel, .messageText { 
     font-weight: bold; 
    } 
    </ui:style> 
    <g:SplitLayoutPanel> 
    <g:north size="700"> 
     <g:VerticalPanel> 
       <g:ScrollPanel styleName="{style.conversationPanelContainer}"> 
        <g:FlexTable ui:field="conversationPanel" styleName="{style.conversationPanel}"></g:FlexTable> 
       </g:ScrollPanel> 
       <g:HorizontalPanel styleName="{style.messageTextAndSendPanel}"> 
        <g:TextBox ui:field="messageText" styleName="{style.messageText}"></g:TextBox><g:Button ui:field="sendButton">Send</g:Button> 
       </g:HorizontalPanel> 
     </g:VerticalPanel> 
    </g:north> 
    <g:south size="300"> 
    <g:Button>TestButton</g:Button> 
    </g:south> 
    </g:SplitLayoutPanel> 
</ui:UiBinder> 

Not şeylerin bir numara: Herşeyden

  • İlk: Eğer UiBinder XML bir hata vardı şablon: değil, <g:button> (büyük/küçük harfe duyarlı)
  • Bize değil RootLayoutPanel kullanımı ual RootPanel
  • Hala bütün LayoutPanel s zımbırtısıyla hakkında biraz kafam karıştı - Mail example onlar bir SplitLayoutPanel bir DockLayoutPanel iç içe, henüz sadece DockLayoutPanel açıkça RootLayoutPanel eklenir kullanmak - Ben anlamak duyuyorum automagicallylar SplitLayoutPanel o Ayrıca eklenir (yeniden boyutlandırma olaylarını alabilir, vb.)? Ana LayoutPanel'de yer alan diğer bazı Widget'lara ne dersiniz? RootLayoutPanel'a açık bir şekilde eklenmeli mi yoksa sadece bu Widget/Composite'in kökeni mi yoksa bu mümkün değil mi? Bunu daha fazla sürdürmek için gerçekten zamanım yok - başka biri için ödev olarak bırakacağım;)

BTW: Bu kodu Quirks modu ve Standartlar modu altında kontrol ettim - I don ' Bir fark görmek, her iki çalışma O_o (bununla birlikte, bu SplitLayoutPanel'un basit bir kullanımıdır - daha karmaşık örnekler muhtemelen Quirks modunda bazı garip davranışlara ve/veya işleme hatalarına neden olacaktır)

+0

DÜŞÜNÜYORUM Çalışmak için DockLayoutPanel almaya çalışırken bunu denedim, ancak iş bilgisayarımdayken tekrar deneyeceğim. Teşekkürler. :) –

+0

DockLayoutPanel'e benzer olmalıdır. Bkz http://stackoverflow.com/questions/2493101/how-do-i-use-splitlayoutpanel-with-uibinder – Carnell

+0

Ayrıca IE'nin quirks modunda da kontrol ettiniz mi? Genellikle Firefox'un quirks modunda çalışır. –

2

Hangi doctype kullanıyorsunuz? Bu paneller sadece standart modda çalışır (en azından bazı burçlar ile). Eğer quirks modunu kullanırsanız, genellikle bu olur, bu panellerle boş bir sayfa alırsınız.

HTML dosyanızı kontrol edin. Bu ideal ile başlamalıdır: alternatif

<!DOCTYPE html> 

Ya standartlar modunda sonuçlanan diğer bazı Doctype (ama kelimesi kelimesine 100% olarak yazın emin olun), http://hsivonen.iki.fi/doctype/

+0

Merhaba, benim doktrin önerdiğinize göre ayarlandı, ancak ne yazık ki hala çalışmıyor. :( –

+0

Sadece emin olmak için: Tarayıcıya gönderilen HTML'nin ilk satırında mı (hatta bir yorum bile olmayabilir)? –

+0

Ayrıca Firefox'un sayfayı hangi modda görüntülediğini hızlıca kontrol edebilirsiniz. Sağ tıklatma -> Sayfa Bilgilerini Görüntüle ve Render Mode değerini kontrol etme. –