java - 如何防止 LayoutManager 过度收缩我的组件?

标签 java swing layout awt border-layout

如何防止 GUI 组件在 BorderLayout 管理器中调整大小时缩小?是否可以设置最小尺寸以使组件不会缩小超过它?似乎使用 setBounds 不适用于布局管理器。

还有一个问题:如果我使用嵌套面板,是否可以为它们分配固定位置并让布局管理器处理这些面板内的组件?我试图阻止 GUI 组件四处移动。

最佳答案

不幸的是,布局管理器是否支持最小尺寸、最大尺寸等取决于布局管理器的实现。这会导致很多令人困惑的行为,因为并非所有布局管理器都遵守它们,而 BorderLayout 也不遵守这些约束。

BoxLayout 将遵循这些值。 JComponent.setBounds 是 LayoutManager 将用来设置子项边界的内容,因此您的布局管理器可能会覆盖您放入其中的任何内容。如果您试图限制某些东西可以变得多小,我建议您在 JFrame 或 JDialog 上设置一个最小尺寸,这样可以防止有人将它做得太小导致布局管理器做一些有趣的事情。

我对任何使用 Swing 的人的第一个建议是捕获 TableLayout,花 15 分钟学习它,您的大部分布局问题都可以解决。我不知道这是否适用于您正在做的事情,但不久之后您就会遇到需要它的布局问题。 TableLayout 允许您指定哪些东西变大或变小,如果窗口太小而无法显示它,那么它不会将它们调整为小于首选大小。

https://www.oracle.com/technetwork/java/tablelayout-141489.html

我不确定你到底想做什么来提供更好的建议。

关于java - 如何防止 LayoutManager 过度收缩我的组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7198158/

相关文章:

java - 显示我的带宽连接

jquery - 隐藏边栏时将内容的宽度设置为 100%?

html - 根据内容动态调整 css 网格列的高度

jquery - 尝试创建两个 50% 高的 div,堆叠在推/拉 "hideTop/showBoth/HideBottom"配置中

java - Java 数组更高效

java - 如何放置静态图像直到使用 picasso 从 url 下载图像

java - OSGi 应用程序所需的专有非 OSGi 包 - 无法重新分发

java - 调用start方法时,是否需要在java的run方法中同步方法?

java - Swing 焦点问题,失去焦点,未调用 focusgain

java - 在板上移动 Snake 的 body 会导致 body 结 block