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

Sha*_*kur 12 java swing

不确定我的需要是否可行.我有一个包含一些内部元素的容器(JPanel).我想知道是否有可能强制内部元素适应容器的大小.我需要它们完全可见,即调整大小以适应Panel的大小,而不是剪切内部元素的某些部分.

滚动不是一种选择.

这是否可以通过使用布局或其他东西?

编辑:重要的澄清:问题是我无法访问内部元素也不能访问它们的属性所以我想说一个Layoutmanager能够调整子元素的大小以适应它的大小.我测试了BorderLayout和GridBagLayout,但结果始终相同,内部元素被删除.

mKo*_*bel 12

正是因为布局管理器存在的原因.LayoutManagers直接用于简单容器的所有工作,不包括GridBagLayout能够直接处理大多数完整GUI的工作.

对于大多数竞争GUI,您有以下选择:

  • 寻找第三方布局,例如MigLayout此处
  • 使用GridBagLayout
  • 非常简单的方法是使用嵌套布局,其中有多个JPanel,每个都有JPanels相同或不同的子LayoutManager
  • 或者自定义布局,应该很难...,但与使用相同GridBagLayout

  • 如果自定义布局与GBL"相同",为什么不使用GBL?;)虽然+1链接和选项. (2认同)

ext*_*orn 5

您可以将JPanel布局设置为边框布局,然后将单个子项添加到中心.如果有多个孩子,这种做法变得越来越有用,因为组件添加到了NORTH,SOUTH,EAST,和WEST将保持静态大小而中心调整大小以填补剩余.

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

最好的方法是尝试几个简单的例子,看看你得到的里程数以及你的子组件嵌套的细微重新设计是否有帮助.