确定组件可能扩展的区域的大小

时间:2014-12-15 02:30:36

标签: java swing resize layout-manager miglayout

有没有办法确定一个组件在容器中可以拥有的区域?

我正在使用MigLayout。假设我有两个组件:JPanelJSlider,它们被添加到容器中。 JSlider停靠在容器的南边,并在调整容器大小时水平增长/收缩。 JPanel有一些初始大小,比如100x100。在这种情况下,除了JSlider占用的区域之外,JPanel本身可以拥有容器所具有的所有区域。因此,如果容器是400x400,JPanel 可以大小为400x384,如果滑块的高度为16,并且它是否完全展开。

无论如何,如果我打电话给panel.getSize(),我就会得到100x100。我想知道是否有办法获得组件可以扩展的区域的大小。所以在这种情况下,我想做一些能让我获得400x384维度的东西。


插图:

enter image description here

此处黑色轮廓标记容器,白色表示未使用的空间,红色标记滑块,蓝色标记可用空间我试图确定的组件

1 个答案:

答案 0 :(得分:1)

我会改变你的布局。

例如我会使用BorderLayout。然后将红色面板添加到南方,将另一个面板添加到" CENTER" BorderLayout。此其他面板现在将包含框架中可用的所有可用空间。

然后将蓝色面板添加到刚刚添加到中心的面板中。现在你可以使用:

blue.getParent().getSize();

确定可用空间。

换句话说,不要总是尝试使用单个布局管理器来解决布局问题。