有没有办法确定一个组件在容器中可以拥有的区域?
我正在使用MigLayout。假设我有两个组件:JPanel
和JSlider
,它们被添加到容器中。 JSlider停靠在容器的南边,并在调整容器大小时水平增长/收缩。 JPanel有一些初始大小,比如100x100。在这种情况下,除了JSlider占用的区域之外,JPanel本身可以拥有容器所具有的所有区域。因此,如果容器是400x400,JPanel 可以大小为400x384,如果滑块的高度为16,并且它是否完全展开。
无论如何,如果我打电话给panel.getSize()
,我就会得到100x100。我想知道是否有办法获得组件可以扩展的区域的大小。所以在这种情况下,我想做一些能让我获得400x384维度的东西。
插图:
此处黑色轮廓标记容器,白色表示未使用的空间,红色标记滑块,蓝色标记可用空间我试图确定的组件
答案 0 :(得分:1)
我会改变你的布局。
例如我会使用BorderLayout。然后将红色面板添加到南方,将另一个面板添加到" CENTER" BorderLayout。此其他面板现在将包含框架中可用的所有可用空间。
然后将蓝色面板添加到刚刚添加到中心的面板中。现在你可以使用:
blue.getParent().getSize();
确定可用空间。
换句话说,不要总是尝试使用单个布局管理器来解决布局问题。