我有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
时,我想添加一行,以防止在添加调用面板的帧最大化时组件移位。
有人可以就如何实现这一点提出任何建议吗?示例代码将非常感激。
答案 0 :(得分:2)
如果您有自定义布局管理器,那么布局管理器应该尊重面板的首选大小。问题出在您的布局管理代码上。
或者,对于一个简单的解决方案,将自定义面板添加到另一个使用FlowLayout的面板。然后,将尊重您的自定义面板的首选大小。
答案 1 :(得分:0)
感谢Thomas
和camickr
提出的建议,我已经使用下面的一系列语法实现了解决方案。
size=c.getMinimumSize();
int dist =(size.width - insets.left - insets.right);
int move = ((dist > 32) ? 35 : 38);
x = (dist + move * hMargin);
再次感谢所有建议。