如何使用 GWT 2.4 的 uiBinder 设置 flextable

发布于 2024-12-21 23:24:31 字数 443 浏览 2 评论 0原文

我正在尝试使用 uiBinder 设置弹性表。我正在使用 GWT 2.4,并且我知道如何制作弹性表,但不知道如何使用 uiBinder。我发现了这个问题: 如何向 UiBinder 中的 Google Web Toolkit 弹性表添加行? 有人询问过 SO,但没有关于如何执行此操作的示例。

因此,如果我将小部件声明为:

@UiBinder FlexTable flexTable;

如何初始化一个包含两列的空白行和一个使用 @UiConstructor 或 (provider=true) 使用 uiBinder 命名列的标题行?

I'm trying to setup a flextable with uiBinder. I'm using GWT 2.4 and I know how to do a flextable, but not with uiBinder. I found this question: How can I add rows to a Google Web Toolkit flextable in the UiBinder? was asked on SO, but no examples on how to do this.

So if I declare the widget as in:

@UiBinder FlexTable flexTable;

How do I do a initialize a blank row with two columns and a header row that names the columns with @UiConstructor or (provider=true) using uiBinder?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

∞梦里开花 2024-12-28 23:24:31

使用 FlexTable 小部件时,您只能使用 ui.xml 模板来设置其位置、格式和属性。您仍然需要在 Java 代码中实用地提供表的内容(和标题)。

有两种方法可以实现此目的:

1:当您调用 initWidget(...) 时,依靠模板为您实例化一个新的空 FlexTable。您可以随后立即对 table.setText(0,0, "Header 1") 等进行适当的调用来指定您的内容。

2:在调用initWidget(...)之前自己实例化FlexTable,并使用provided=true注释您的表成员变量。对 setText() 进行相同的调用。

示例
(使用方法 2)

public final class SomeWidget extends Composite {

  @UiField (provided=true) FlexTable table;

  SomeWidget() {

    // When using provide=true, the table must be instantiated
    // BEFORE calling initWidget.
    setupTable();

    initWidget(binder.createAndBindUi(this));
  }

  private void setupTable() {
    table = new FlexTable();
    table.setText(0, 0, "Header 1");
    table.setText(0, 1, "Header 2");

    // Create a temp blank row:
    table.insertRow(1);
  }

  private static final Binder binder = GWT.create(Binder.class);
  interface Binder extends UiBinder<Widget, SomeWidget> {}
}

并在您的 ui.xml 文件中:

<ui:UiBinder
   xmlns:gwt="urn:import:com.google.gwt.user.client.ui"
   xmlns:ui="urn:ui:com.google.gwt.uibinder">

  <ui:style>
    .table-style {
      border: 1px solid black;
    }
  </ui:style>

  <gwt:HTMLPanel>
    Other random html
    <gwt:FlexTable ui:field="table" styleName="{style.table-style}" borderWidth="2" />
  </gwt:HTMLPanel>

</ui:UiBinder>

When using the FlexTable widget, you can only use the ui.xml template to set it's location, formatting, and attributes. You'll still need to provide the contents (and headers) of the table pragmatically in your java code.

There are two approaches to this:

1: Rely on the template to instantiate a new, empty FlexTable for you when you call initWidget(...) . You can follow up with appropriate calls to table.setText(0,0, "Header 1"), etc. immediately afterwards to specify your content.

2: Instantiate the FlexTable yourself before you call initWidget(...) and also annotate your table member variable with provided=true. Follow up with the same calls to setText().

Example
(Using approach 2)

public final class SomeWidget extends Composite {

  @UiField (provided=true) FlexTable table;

  SomeWidget() {

    // When using provide=true, the table must be instantiated
    // BEFORE calling initWidget.
    setupTable();

    initWidget(binder.createAndBindUi(this));
  }

  private void setupTable() {
    table = new FlexTable();
    table.setText(0, 0, "Header 1");
    table.setText(0, 1, "Header 2");

    // Create a temp blank row:
    table.insertRow(1);
  }

  private static final Binder binder = GWT.create(Binder.class);
  interface Binder extends UiBinder<Widget, SomeWidget> {}
}

And in your ui.xml file:

<ui:UiBinder
   xmlns:gwt="urn:import:com.google.gwt.user.client.ui"
   xmlns:ui="urn:ui:com.google.gwt.uibinder">

  <ui:style>
    .table-style {
      border: 1px solid black;
    }
  </ui:style>

  <gwt:HTMLPanel>
    Other random html
    <gwt:FlexTable ui:field="table" styleName="{style.table-style}" borderWidth="2" />
  </gwt:HTMLPanel>

</ui:UiBinder>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文