【发布时间】:2015-02-13 02:34:03
【问题描述】:
有没有办法确定组件在容器中可以拥有的区域?
我正在使用MigLayout。假设我有两个组件:一个JPanel 和一个JSlider,它们被添加到一个容器中。 JSlider 停靠在容器的南边,并在调整容器大小时水平扩展/收缩。 JPanel 有一些初始大小,例如 100x100。在这种情况下,除了 JSlider 占据的区域之外,JPanel 可以拥有容器所拥有的所有区域。所以如果容器是 400x400,JPanel 可以有 400x384 的大小,如果滑块的高度是 16,如果它完全展开。
无论如何,如果我打电话给panel.getSize(),我应该得到 100x100。我想知道是否有办法获得组件可以扩展的区域的大小。所以在这种情况下,我想做一些让我得到 400x384 尺寸的东西。
插图:
这里黑色轮廓标记容器,白色表示未使用空间,红色标记滑块,蓝色标记我要确定其可用空间的组件。
【问题讨论】:
-
为什么需要知道可用空间?您的自定义组件应该请求它需要的所有空间,并让布局管理器分配空间。
-
@camickr 我正在手动调整 jpanel 的大小以保持纵横比。
-
@camickr 但这不是这个问题的重点。无论如何,我想知道我的要求是否可行。
-
是的,这就是重点,因为很多时候,当有更简单的方法可以解决问题时,人们会实施复杂的解决方案。但首先我们需要知道确切的要求和要求的原因,而不仅仅是您尝试的解决方案。
标签: java swing resize layout-manager miglayout