0

我有一个JPanel我添加了一些组件(复选框,组合)。我注意到,当框架最大化时,组件的边界也会向右移动或移动。然后,在恢复时,组件将移回原始位置。

在 21 英寸及以上的显示器上,组件移动确实会产生影响,因为您可以看到组件移动到最右边。

我们正在使用实现的自定义布局管理器java.awt.LayoutManager2。类内容非常庞大,因此将指向确定组件边界的区域。

protected int hMargin = 0;
..
Insets insets = target.getInsets();
Dimension size = target.getSize();

int  x = (size.width - insets.left - insets.right - 15 * hMargin);

并从调用布局的框架中添加组件,如下所示:

JPanel  pl = new JPanel(new OurLayout(this))
//add the component to panel
pl.add(checkBox);
..

在我们决定的时候x,我想添加一条线以防止在添加调用面板的框架最大化时组件移动。

任何人都可以就如何实现这一目标提出任何想法吗?示例代码将不胜感激。

4

2 回答 2

2

如果您有自定义布局管理器,那么您的布局管理器应该尊重面板的首选大小。问题在于您的布局管理代码。

或者对于一个简单的解决方案,将您的自定义面板添加到另一个使用 FlowLayout 的面板。然后将尊重您的自定义面板的首选尺寸。

于 2011-10-06T14:53:42.317 回答
0

感谢他们Thomascamickr建议,我已经使用下面的语法线实现了一个解决方案。

      size=c.getMinimumSize();
      int dist =(size.width - insets.left - insets.right);
      int move = ((dist > 32) ? 35 : 38);
      x = (dist + move * hMargin);

再次感谢大家的建议。

于 2011-10-06T16:07:59.360 回答