2014-03-27 28 views
1

改变布局在我的JPanel,我有6个按钮连续布局(使用FlowLayout截至目前)。面板的默认大小足以在一行中容纳这些按钮。但是,当调整大小frame时,它会卡住每个按钮的最小大小总和的大小。一个灵活的布局管理器,将根据调整大小

我需要一个布局管理器,只需将按钮放在新的行中就可重新调整面板大小。 我是Java Swing的新手,所以如果这是一个微不足道的问题,我会提前道歉。

+0

尽管GridbagLayout非常灵活,但它并不是微不足道的,事实上在标准中没有针对每种情况的布局。我同意@ lance-java说MigLayout是迄今为止最高效和实用的布局。 –

+0

@YagoMéndezVidal谢谢,我现在试图miglayout – ContinuousError

+0

所以,我用[链接](http://www.uffesorensen.dk/Uni/dat1/doc/dat1/path/gui/ModifiedFlowLayout.html)哪是ModifiedFlowlayout()的代码,然后添加一个Thread来每隔100 ms重新验证面板 – ContinuousError

回答

3

MigLayout是迄今为止我使用过的最好的布局管理器。过去需要嵌套容器和许多难以理解的代码的东西可以在一个容器中完成,而且容易理解(并且维护)字符串约束。

+0

检出它,谢谢! – ContinuousError

2

流布局能够满足您的期望行为(如果组件不适合将组件移动到新行中)。检查出swing tutorial(运行FlowLayoutDemo)。您必须向我们展示您的源代码才能发现,是否有其他限制可以阻止它。

+0

FlowLayout不适合我,我现在尝试MigLayout – ContinuousError

0

FlowLayout确实在新行上绘制组件,但问题在于面板的首选大小不会更改,所以在许多情况下,您看不到组件(除非您碰巧将面板添加到一个BorderLayout的中心)。

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

+0

WrapLayout似乎没有工作,但谢谢你的建议 – ContinuousError

+0

@ContinuousError,发布你的[SSCCE](http://www.sscce.org /)显示问题。 – camickr