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

标签 java swing layout-manager flowlayout

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

示例:

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

如果我通过鼠标更改 JFrame 宽度,JButton 将落在下一行:

enter image description here

问题是您看不到所有 JButton,JFrame 需要调整高度。

如何使JFrame根据设置的宽度自动调整高度以适应所有元素?

最佳答案

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

如果您希望显示所有按钮,那么也许更好的解决方案是使用以下方法使框架不可调整大小:

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

无论如何,如果您确实想这样做,那么您可能会向框架的内容 Pane 添加一个 ComponentListener。然后在 componentResized() 方法中,您将调用 pack()。

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

Toolkit.getDefaultToolkit().setDynamicLayout( false );

这样 pack() 只在鼠标释放时执行一次。

关于java - 当元素移动到下一行时如何使用 FlowLayout 自动调整 JFrame 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24867154/

相关文章:

java - ClientDetailsS​​ervice 在身份验证期间被调用 6 次

java - 防止 SearchView 折叠

java - 如何使 JTable 单元格在单击时执行与双击时不同的操作?

Java堆叠组件

java - 如何为嵌套 JPanel 选择最佳布局?

java - 如何制作一个在给定方法中使用的列表

Java - 通过模板比较长值

Java:对象的数组列表以及获取自动创建的复选框的值/属性

java - 重新绘制 JPanel 的一部分

java - 我无法让 BoxLayout 的 setPreferredSize() 方法按照我希望的方式工作