Bạn nên tạo lớp con của riêng bạn ComplexPanel
. Điều này sẽ cung cấp cho bạn một cái gì đó hoạt động giống như một HorizontalPanel
hoặc VerticalPanel
, chỉ dựa trên các yếu tố danh sách chứ không phải là các phần tử bảng. Hình ảnh trông giống như sau:
public class OListPanel extends ComplexPanel {
final OListElement ol = Document.get().createOLElement();
public OListPanel() {
setElement(ol);
}
public void add(Widget w) {
LIElement li = Document.get().createLIElement();
ol.appendChild(li);
add(w, (Element)li.cast());
}
public void insert(Widget w, int beforeIndex) {
checkIndexBoundsForInsertion(beforeIndex);
LIElement li = Document.get().createLIElement();
ol.insertBefore(li, ol.getChild(beforeIndex));
insert(w, (Element)li.cast(), beforeIndex, false);
}
public boolean remove(Widget w) {
Element li = DOM.getParent(w.getElement());
boolean removed = super.remove(w);
if (removed) {
ol.removeChild(li);
}
return removed;
}
}
Tôi chưa thử nghiệm nhưng về cơ bản là đúng. WRT đánh dấu bạn được đăng trong câu hỏi của bạn, mã này sẽ tạo ra một sự khác biệt nhỏ, vì nhãn GWT có riêng <div>
yếu tố của họ:
<ol>
<li><div>MyLabel</div></li>
<li><input type="text"></li>
</ol>
Bạn có thể thích InlineLabel
, mà là dựa trên các yếu tố ít xâm nhập <span>
.
Giải pháp hoàn hảo cho tôi. Cảm ơn. – flash