Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 根据大小自动排列gwt按钮_Java_Gwt_Layout_Button - Fatal编程技术网

Java 根据大小自动排列gwt按钮

Java 根据大小自动排列gwt按钮,java,gwt,layout,button,Java,Gwt,Layout,Button,我是GWT新手,因此需要以下方面的帮助: 我正在使用UIBinder,需要以一种特殊的方式安排三个带有动态标签的gwt按钮(见附图)。我该怎么做?我很感激你的帮助 正如我在评论中所说的,您只需使用附加的CSS样式将小部件向左浮动即可。作为一个GWT容器,有两个 CSS: 代码: 显然,您可以将CSS样式集成为表示按钮的小部件的一部分。只需记住,您的小部件必须为自身或float:left指定一个宽度显然不起作用 更新:我刚刚阅读了您的最后一条评论,因此您只需开发一个算法来调整按钮1和按钮2的宽度,

我是GWT新手,因此需要以下方面的帮助:

我正在使用UIBinder,需要以一种特殊的方式安排三个带有动态标签的gwt按钮(见附图)。我该怎么做?我很感激你的帮助


正如我在评论中所说的,您只需使用附加的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);