1

我创建了一个 FlexTable,我想在父 FlowPanel 中水平居中,例如:

FlexTable ft = new FlexTable();
ft.add(0, 0, new Label());
ft.add(0, 1, new Orange());
ft.add(0, 2, new Label());

FlowPanel parent = new FlowPanel();
parent.add(ft); // how can I horizontally center the table in this div?

表格的内容比父 FlowPanel 窄(也就是 width:auto,浏览器的整个宽度),但是表格现在是左对齐的,

谢谢

4

2 回答 2

2

两种选择:

parent.getElement().getStyle().setTextAlign(TextAlign.CENTER);

或者

ft.getElement().getStyle().setProperty("margin", "0 auto");

当然,您可以改用 CSS 样式。

于 2013-01-20T04:42:36.597 回答
1

首先?您使用的是哪个版本的 GWT?之所以提出这个问题,是因为 FlexTable 中没有类似于您在最新版本中使用的 add (int, int, Widget ) 的方法。

但是,您可以使用以下代码。

    FlexTable ft = new FlexTable();
    ft.setWidget(0, 0, new Label("a"));
    ft.setWidget(0, 1, new Label("b"));
    ft.setWidget(0, 2, new Label("c"));

    FlowPanel parent = new FlowPanel();
    parent.setSize("100%", "100%");
    parent.add(ft);
    parent.getElement().getStyle().setProperty("TextAlign", "center");
    // If you are using Firefox : 
    //parent.getElement().getStyle().setProperty("TextAlign", "-moz-center");
    RootLayoutPanel.get().add(parent);

如果您不想在 java 代码中提及样式,您可以随时使用 CSS 之类的

parent.addStyleName("myStyle");

在 CSS 中

.myStyle{
text-align : center;
}
于 2013-01-20T05:49:09.037 回答