自动调整摆动元素的大小以适合容器的大小

2022-09-04 02:02:41

不确定我需要的是否可能。我有一个容器(JPanel),其中包含一些内部元素。我想知道是否有可能迫使内部元件适合容器的大小。我需要它们完全可见,即调整大小以适应面板的大小,而不是切割内部元素的某些部分。

滚动不是一个选项。

使用布局或其他方式是否可以实现?

编辑:重要的澄清:问题是我无法访问内部元素,也无法访问它们的属性,所以我想说需要一个能够调整子元素大小以适应其大小的布局管理器。我测试了BorderLayout和GridBagLayout,但结果总是一样的,内部元素被切掉了。


答案 1

正是出于这个原因,LayoutManagers的存在。直接为简单容器完成所有工作,不包括能够直接处理大多数完整GUI的工作。LayoutManagersGridBagLayout

对于大多数完整的 GUI,您有以下选择:

  • 寻找第三方布局,如MigLayout这里
  • 使用 GridBagLayout
  • 非常简单的方法是使用嵌套布局,其中有多个,并且每个都有相同或不同的子项JPanelJPanelsLayoutManager
  • 或者自定义布局,应该很难...,但与使用相同GridBagLayout

答案 2

您可以将布局设置为边框布局,然后将单个子项添加到中心。如果有多个子级,则此方法将变得不那么有用,因为添加到 、 、 的组件将保持静态大小,而中心调整大小以填充其余部分。JPanelNORTHSOUTHEASTWEST

简而言之,这不是一个理想的解决方案。Swing 中的所有布局都变得更加复杂,因为不同的组件以不同的方式运行,因此您确实需要提供要添加到面板中的子组件的更多详细信息,以及在这些组件上被覆盖的任何行为。

最好的方法是尝试几个简单的例子,看看你获得了多少里程,以及对子组件嵌套的微妙重新设计是否会有所帮助。


推荐