java - 如何固定 Swing 组件的边界

标签 java swing resize layout-manager jcomponent

我有一个 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/

相关文章:

java - 将 BufferedImage 添加到 JLayerPane 上的 JPanel

java - JSpinner 的 JButton 到 ImageIcon

Java 显示带有任务栏但没有标题栏的全屏 swing 应用程序

java - 云上的ReSTLet webService

java - 图像分辨率发生变化,但我只是想旋转图像

java - 如何避免长 switch/case 语句?

java - 循环获取选定的索引

html - 无法缩小我的导航栏

ios - 在聊天应用程序中调整 Collection View 中的单元格大小时遇到​​问题

matlab - 图像大小调整和裁剪的顺序重要吗?