Java 根据大小自动排列gwt按钮
我是GWT新手,因此需要以下方面的帮助: 我正在使用UIBinder,需要以一种特殊的方式安排三个带有动态标签的gwt按钮(见附图)。我该怎么做?我很感激你的帮助Java 根据大小自动排列gwt按钮,java,gwt,layout,button,Java,Gwt,Layout,Button,我是GWT新手,因此需要以下方面的帮助: 我正在使用UIBinder,需要以一种特殊的方式安排三个带有动态标签的gwt按钮(见附图)。我该怎么做?我很感激你的帮助 正如我在评论中所说的,您只需使用附加的CSS样式将小部件向左浮动即可。作为一个GWT容器,有两个 CSS: 代码: 显然,您可以将CSS样式集成为表示按钮的小部件的一部分。只需记住,您的小部件必须为自身或float:left指定一个宽度显然不起作用 更新:我刚刚阅读了您的最后一条评论,因此您只需开发一个算法来调整按钮1和按钮2的宽度,
正如我在评论中所说的,您只需使用附加的CSS样式将小部件向左浮动即可。作为一个GWT容器,有两个 CSS: 代码: 显然,您可以将CSS样式集成为表示按钮的小部件的一部分。只需记住,您的小部件必须为自身或
float:left指定一个宽度代码>显然不起作用
更新:我刚刚阅读了您的最后一条评论,因此您只需开发一个算法来调整按钮1和按钮2的宽度,以填充容器中的所有可用空间<代码>浮动:左代码>仍然有效,您只需计算出按钮的大小
使用3个按钮很容易(button1Width和button2Width是动态的,button3Width是固定的),下面是如何计算最终宽度(从上面继续):
只需确保在将所有内容附加到DOM之后进行这些调整,否则,宽度将明显不可用。您是否需要调整每个按钮的宽度,以最终使其看起来像您的图片,或者您只是在寻找一种方法,使它们彼此相邻,如果线上没有足够的空间容纳一个按钮,则应继续下一行?因为在后一种情况下,您可以通过给按钮一个固定的宽度并将其设置为float:left代码>。它应该与图片上的完全一样<代码>浮动:左代码>不起作用,因为我想让按钮填满整个可用的水平空间。例如:我想放置按钮的区域是300px宽。按钮1的宽度为250px。按钮2不能放在按钮1旁边,因此按钮1的宽度为300px,按钮2和3转到下一行代码>可以。。。还是我误解了什么。看看:该死。我今天太傻了:D我想现在太早了^^^谢谢你的提示。。。我一直在寻找一些GWT布局来完成一个简单的css任务。好吧,不,我又一次愚蠢了<代码>浮动:左代码>不满足我的需要。如果按钮1太大,按钮2无法靠近它,我希望按钮1占据可用空间(在上面的示例中:300px-尽管它实际上只需要250就可以显示它的标签),按钮2和3填充第二行的所有空间(例如300px)(按钮3具有固定大小,但按钮1和2是动态的).谢谢;)我要试试这样的。我想,也许有一些奇特的GWT布局可以做这类事情……这是一个如此具体和狭窄的案例,我怀疑任何框架或工具包都不会有这样的功能。您还必须记住,GWT不是一个框架。它是一个工具包,因此它为您提供了构建工具来构建您自己的框架和功能。
.yourWidget {
float: left;
..other styles..
}
.container {
width: 300px;
overflow: hidden;
}
YourButtonWidget w1 = new YourButtonWidget("Some long label");
w1.addStyleNames("yourWidget"):
YourButtonWidget w2 = new YourButtonWidget("Label");
w2.addStyleNames("yourWidget"):
YourButtonWidget w3 = new YourButtonWidget("Another Label");
w3.addStyleNames("yourWidget"):
FlowPanel container = new FlowPanel();
container.add(w1);
container.add(w2);
container.add(w3);
int containerWidth = container.getElement().getOffsetWidth();
int button1Width = w1.getElement().getOffsetWidth();
int button2Width = w2.getElement().getOffsetWidth();
int button3Width = w3.getElement().getOffsetWidth();
if ( (button1Width + button2Width) > containerWidth ) {
button1Width = containerWidth;
if (( button2Width + button3Width ) > containerWidth) {
button2Width = containerWidth;
} else {
button2Width = containerWidth - button3Width;
}
} else {
button2Width = containerWidth - button1Width;
}
w1.getElement().getStyle().setWidth(button1Width,Unit.PX);
w2.getElement().getStyle().setWidth(button2Width,Unit.PX);
w3.getElement().getStyle().setWidth(button3Width,Unit.PX);