繁体   English   中英

Java Swing:无法使用GridBagLayout在整个JPanel中扩展组件

[英]Java Swing: cannot spread components in whole JPanel with GridBagLayout

我正在尝试实现一个简单的JDialog,其中上层JPanel具有一个由5对JLabel组成的GridBagLayout:在每对中,第一个JLabel充当标题,而第二个JLabel包含从Web服务调用接收的数据。 这是一个例子:

在此处输入图片说明

如您所见,此窗口太“空”,没有太多空间。 首先,我不明白为什么上面板比第二面板大得多。 实际上,标题为“ Risultato”的JPanel也具有GridBagLayout,而第一个面板位于列0和第0行,第二个面板位于列0和第1行。

然后,对于每个JLabel,我调用以下方法:setMinimumSize(new Dimension(231,25))setPreferredSize(new Dimension(231,25))setMaximumSize(new Dimension(231,25))

此外,我为与每个JLabel关联的每个GridBagConstraints设置了锚点,如下所示:

  • GridBagConstraints.FIRST_LINE_START为红色;
  • GridBagConstraints.CENTER为绿色;
  • GridBagConstraints.LINE_START为橙色;
  • GridBagConstraints.LINE_END为黄色;
  • GridBagConstraints.LAST_LINE_START为蓝色;
  • GridBagConstraints.LAST_LINE_END为白色;

最后我也叫setWeightX(1.0); 对于每个约束。 我不知道为什么会这样,为什么在所有JLabel之前和之后都有这么多的空白空间。 有办法解决吗? 这样上面板可以适应其所有组件吗? 我无法编写任何Java代码,因为我的开发团队被迫使用奇怪的内部框架,在该内部框架中,我们通过编写xml文件来构建布局,其中每个标签都是具有正确嵌套程度的容器或组件,然后通过Reflection API实现Java类和方法被实例化并调用。 无论如何,机制应该相同。

UPDATE

非常感谢Kevin Anderson,我能够大大改善JDialog布局。 此外,我在上面板容器上为GridBagConstraints调用了setWeightY(0.0) ,这样它也不会太大,并且可以调整为包含的组件的大小。

在此处输入图片说明

您的标签位于两列中,并且它们的权重X均相等,因此GridBagLayout会为两列分配大致相等的宽度。 但是,如果您给第二列中的标签赋予更大的权重X,例如10.0,则使第二列比第一列占用更多的空间。 您将获得较少的列之间的空间,而在面板的最右侧获得更多的空间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM