java - gridheight 似乎不起作用

标签 java swing layout-manager gridbaglayout

我正在尝试使用 GridBagLayout,但遇到一些问题。我想使用 12 行进行布局。因此,首先我制作两个 JPanel 来填充前两行(gridheight = 1)。然后我制作另外 5 个 JPanel 来填充其他 10 行(网格高度 = 2)。底部 5 个 JPanel 的 gridheight = {2,4,6,8,10},因此它们不会重叠或发生任何情况。 我现在遇到的问题是:
所有 JPanel 的尺寸相同!

我也用两种方式填充,并且不使用任何 anchor 。如果我添加一个 gridx = 1、gridy = 0 和 gridheight = 2 的 JPanel,那么它将具有双倍的高度,那么这里是怎么回事?我是否必须事先告诉布局系统我要使用的总行数?如果是这样我该怎么做?

最佳答案

首次用户会错过 GridBagLayout (GBL) 的几个方面。

1) 放置在 GBL 内的组件将以其“首选”大小进行初始化。 JPanel、iirc 的首选尺寸为 1x1。

2)如果您希望GBL单元格根据封闭容器调整大小,您需要给它们一个weightx和weighty。这两个属性的作用是,根据分配的所有weightx 和weighty 的比率,为单元格提供可用区域的百分比。例如如果我有 2 个单元格,其中 1 个单元格的weightx = 1.0,而第二个单元格的值为 2.0,那么第一个单元格的宽度将是第二个单元格的 1/2(或者第二个单元格的宽度是第二个单元格的两倍)。

3) 当你第一次接触GBL时,GBL需要大量的试验和错误,但它是最强大、最灵活、最可靠的布局(特别是与嵌套布局相比,blech)

关于java - gridheight 似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26833913/

相关文章:

java - 自定义抽象表模型内的无限循环

java - 将 JPanel 添加到 JScrollPane

java swing无法扩展JFrame的高度?

java - 了解 Java Scanner 的怪异之处

java - 我如何获得学生成绩计算器程序中类似成绩字母的总数

java - 在 java 中编写 unicode (Sindhi) 的 keyListener 实现问题

java - 将文本字段添加到程序中

java - 正确的代码无法编译?

java - 动态注入(inject) Google Guice bean

java - 基于当前日期+时间查询 JPA 实体实例的最佳方法是什么?