java - 给 JPanel 一个基于百分比的宽度

标签 java swing jpanel layout-manager

制作按宽度占据其父容器固定百分比的 JPanel 的最简单方法是什么?

当父容器的宽度改变时,它的宽度应该更新。

我尝试使用 Box.createHorizo​​ntalStrut(),但是当 JPanel 的父容器的宽度发生变化时,它不会更新。

最佳答案

你想要的是一个GridBagLayout . ( How to use? )

使用 GridbagLayout 可以定义 GridBagConstraints对于您添加的每个组件。

这些约束包括 weightx这完全符合它在 jar 头上所说的。这是在该“网格行”中的所有组件计算的相对值,类似于分布部分。

请注意,当超过组件的首选大小时,weightx 才开始发挥作用。请注意,这可能会导致有趣的错误,在设置 minimumSize() 时,另请参阅 this SO answer.

无论如何:您可以通过指定其当前行中组件的百分比或任意倍数来获取 weightx 所需的值。

这意味着要让组件占用父容器可用宽度的 50%,请使用 weightx = 0.5。确保该行的 weightx 值加起来为 1.0

关于java - 给 JPanel 一个基于百分比的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30611975/

相关文章:

java - Java 是否会阻止由runtime.exec 创建的进程?

java - Netty:关闭 channel 时出现 ClosedChannelException

java - JTextPane 适合底层 JPanel 和 JFrame

java - public static void main(String[] args) 应该放在哪里?

java - 立即更改图像

java - 创建带有状态的 GUI 组件

java - keyPressed 监听器产生奇怪的行为

Java Swing MouseListener 调用类

java - jmf 应用程序出现 NoPlayerException 运行时错误

java - GWT 访问网格元素值