OK, đã nhận nó làm việc (xem cũ các phiên bản của câu trả lời này cho các lần thử trước;)).
Giải pháp của tôi dựa trên Mail example. Mã làm việc:
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>
Lưu ý một số điều:
- Trước hết: bạn đã có một lỗi trong XML UiBinder của bạn mẫu: đó là
<g:Button>
, không phải <g:button>
(phân biệt chữ hoa chữ thường)
- Việc sử dụng
RootLayoutPanel
thay vì chúng tôi ual RootPanel
- tôi vẫn còn một chút nhầm lẫn về toàn bộ
LayoutPanel
s thingy - trong Mail example họ sử dụng một SplitLayoutPanel
lồng trong một DockLayoutPanel
, tuy nhiên chỉ có DockLayoutPanel
được bổ sung một cách rõ ràng đến RootLayoutPanel
- tôi hiểu rằng SplitLayoutPanel
Automagically cũng được thêm vào (để nó có thể nhận được các sự kiện thay đổi kích thước, vv)? Làm thế nào về một số Widgets khác lồng nhau trong LayoutPanel chính - họ có phải được thêm một cách rõ ràng vào RootLayoutPanel
hoặc chỉ khi chúng là gốc của Widget/Composite hoặc là thậm chí không thể? Tôi không thực sự có thời gian để theo đuổi điều này thêm nữa - tôi sẽ để nó như một bài tập về nhà cho người khác;)
BTW: Tôi đã kiểm tra mã này dưới chế độ Quirks và chế độ Chuẩn - I don ' t thấy một sự khác biệt, cả hai công việc O_o (mặc dù, đây là một sử dụng đơn giản của SplitLayoutPanel
- ví dụ phức tạp hơn có thể dẫn đến một số hành vi lạ trong chế độ Quirks và/hoặc lỗi hiển thị)
Nguồn
2010-03-22 20:43:43
Không có ngoại lệ? (cả trong DevMode và Firebug/giao diện điều khiển trình duyệt khác) –
Tôi đang rời khỏi máy tính của mình vào lúc này, vì vậy tôi không thể nói chắc chắn, nhưng tôi nhớ đã thấy một số cuộc gọi RPC được gửi đi trong cửa sổ giao diện điều khiển Firebug (I có một cuộc gọi RPC thực hiện mỗi x phút), mặc dù thiếu UI. Nếu có ngoại lệ, chẳng có gì chạy cả, phải không? –