如何使用FlowLayout在元素移动到下一行时自动调整JFrame的大小

时间:2014-07-21 14:07:01

标签: java swing layout-manager flowlayout

当您通过鼠标手动调整JFrame时,如果没有足够的空间,JPanel上的元素可以继续下一行,如果JFrameJButton,则可以删除新的元素行足够大

示例:

此时有两行适合所有JFrame s enter image description here

如果我通过鼠标更改JButton宽度,JButton将在下一行中删除:

enter image description here

问题是你无法看到所有JFrame,JFrame需要调整高度。

如何使{{1}}自动调整高度以根据设置的宽度调整所有元素?

2 个答案:

答案 0 :(得分:2)

这不是一个很好的设计。告诉我另一个这样的专业应用程序?人们不喜欢看到框架的大小跳跃。用户通常会调整框架的大小以适应桌面上的应用程序,如果他们修复了宽度和高度的变化,他们会感到沮丧。让用户控制大小。

如果您想要显示所有按钮,那么可能更好的解决方案是使用以下内容使框架不可调整大小:

frame.setResizable( false );
frame.pack();
frame.setVisible();

无论如何,如果您真的想这样做,那么您可能会在框架的内容窗格中添加ComponentListener。然后在componentResized()方法中调用pack()。

但是,这会导致每隔几个像素生成多个事件,因此您可能还想使用:

Toolkit.getDefaultToolkit().setDynamicLayout( false );

因此只有在释放鼠标时才能执行一次pack()。

答案 1 :(得分:0)

frame.setResizable(false);
frame.pack();
frame.setVisible(true);
frame.setSize(400,200);