Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.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 灵活的布局管理器,可根据调整大小更改布局_Java_Swing_Layout Manager - Fatal编程技术网

Java 灵活的布局管理器,可根据调整大小更改布局

Java 灵活的布局管理器,可根据调整大小更改布局,java,swing,layout-manager,Java,Swing,Layout Manager,在我的JPanel中,我有6个按钮排成一行(从现在起使用FlowLayout)。面板的默认大小足以容纳一行中的这些按钮。但是,当调整帧的大小时,它会被固定在每个按钮的最小大小之和的大小上 我需要一个布局管理器,它只需在重新调整面板大小时将按钮放入新行。 我对Java Swing还很陌生,所以如果这是一个微不足道的问题,我提前表示歉意。是迄今为止我使用过的最好的布局管理器。过去需要嵌套容器和大量难以理解的代码的事情可以通过简单易懂(并维护)的字符串约束在单个容器中完成。流布局能够满足您所需的行为(

在我的
JPanel
中,我有6个按钮排成一行(从现在起使用
FlowLayout
)。面板的默认大小足以容纳一行中的这些按钮。但是,当调整
帧的大小时,它会被固定在每个按钮的最小大小之和的大小上

我需要一个布局管理器,它只需在重新调整面板大小时将按钮放入新行。
我对Java Swing还很陌生,所以如果这是一个微不足道的问题,我提前表示歉意。

是迄今为止我使用过的最好的布局管理器。过去需要嵌套容器和大量难以理解的代码的事情可以通过简单易懂(并维护)的字符串约束在单个容器中完成。

流布局能够满足您所需的行为(如果组件不适合,则将其移动到新行)。查看(运行FlowLayoutDemo)。您必须向我们展示您的源代码,以确定是否有其他约束阻止它。

FlowLayout确实在新行上绘制组件,但问题是面板的首选大小没有改变,因此在许多情况下,您无法看到组件(除非您碰巧将面板添加到BorderLayout的中心)


一种解决方案是使用,它扩展了FlowLayout,以重新计算面板的首选大小,这样您就可以看到新行上的按钮。

这一点并不微不足道,事实上,在标准中,并不是每种情况都有一个布局,尽管GridbagLayout非常灵活。我同意@lance java的观点,MigLayout是迄今为止最有效的布局ent和实用布局。@YagoMéndezVidal谢谢,我现在正在尝试miglayout所以,我使用了一个,这是修改后的布局()的代码然后添加了一个线程来重新验证面板每100 msFlowLayout对我不起作用,我现在正在尝试MigLayout查看它,谢谢!WrapLayout似乎不起作用,但谢谢你的帮助suggestion@ContinuousError,发表你的文章,说明问题所在。