我有一个 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
的地方,我想添加一行,以防止当添加调用面板的框架最大化时组件发生移动。
任何人都可以提出关于如何实现这一目标的任何想法吗?示例代码将不胜感激。
最佳答案
如果您有自定义布局管理器,那么您的布局管理器应遵循面板的首选大小。问题出在您的布局管理代码上。
或者对于一个简单的解决方案,将自定义面板添加到另一个使用 FlowLayout 的面板。然后您的自定义面板的首选尺寸将得到尊重。
关于java - 如何固定 Swing 组件的边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7674873/