gpt4 book ai didi

java - 为什么网格不遵守约束?

转载 作者:行者123 更新时间:2023-12-01 18:39:50 26 4
gpt4 key购买 nike

我不明白 GridBagLayout 的某些内容。这是一个截图来解释

enter image description here

对于 JTextField“Janvier”,gridy = 0、gridx = 1 和 **gridwidth = 5**

对于 JTextField“Février”,gridy = 0、gridx = 5 且 gridwidth = 4

对于周数 1、2、3 和 4:gridy = 1,gridx = 0、1、2 和 3,以及 gridwidth = 1

对于周数 5:gridy = 1、gridx = 4 和 gridwidth = 2。

事实上,我希望在“Janvier”和“Février”JTextField 下进行第 5 周。

你对此有何看法?我是不是忘记了什么?

谢谢。

编辑:抱歉,我在解释中犯了一个错误。第一个 JTextField“Janvier”的 gridx = 0。

这是一个新的屏幕截图及其代码: enter image description here

            JPanel pan = new MyGridBagPan();
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.BOTH;
c.gridheight = 1;
c.gridwidth = 5;
c.gridx = 0;
c.gridy = 0;

JTextField field = new MyLeftField("Janvier", "", 5, 14, Color.DARK_GRAY, Font.PLAIN, Color.WHITE, false);
pan.add(field, c);
c.gridwidth = 1;
c.gridx = 0;
c.gridy++;
field = new MyLeftField("1", "", 2, 14, Color.DARK_GRAY, Font.PLAIN, Color.WHITE, false);
pan.add(field, c);
c.gridx++;
field = new MyLeftField("2", "", 2, 14, Color.DARK_GRAY, Font.PLAIN, Color.WHITE, false);
pan.add(field, c);
c.gridx++;
field = new MyLeftField("3", "", 2, 14, Color.DARK_GRAY, Font.PLAIN, Color.WHITE, false);
pan.add(field, c);
c.gridx++;
field = new MyLeftField("4", "", 2, 14, Color.DARK_GRAY, Font.PLAIN, Color.WHITE, false);
pan.add(field, c);
c.gridy = 0;
c.gridx = 5;
c.gridwidth = 5;
field = new MyLeftField("Février", "", 0, 14, Color.DARK_GRAY, Font.PLAIN, Color.WHITE, false);
pan.add(field, c);
c.gridwidth = 2;
c.gridx = 4;
c.gridy = 1;
field = new MyLeftField("5", "", 2, 14, Color.DARK_GRAY, Font.PLAIN, Color.WHITE, false);
pan.add(field, c);
c.gridwidth = 1;
c.gridx+=2;
field = new MyLeftField("6", "", 2, 14, Color.DARK_GRAY, Font.PLAIN, Color.WHITE, false);
pan.add(field, c);
c.gridx++;
field = new MyLeftField("7", "", 2, 14, Color.DARK_GRAY, Font.PLAIN, Color.WHITE, false);
pan.add(field, c);
c.gridx++;
field = new MyLeftField("8", "", 2, 14, Color.DARK_GRAY, Font.PLAIN, Color.WHITE, false);
pan.add(field, c);
c.gridx++;
field = new MyLeftField("9", "", 2, 14, Color.DARK_GRAY, Font.PLAIN, Color.WHITE, false);
pan.add(field, c);
JOptionPane.showOptionDialog(null, pan
, "test", JOptionPane.DEFAULT_OPTION, JOptionPane.DEFAULT_OPTION, null, null, null);

最佳答案

For the week number 5 : gridy = 1, gridx = 4 and gridwidth = 2.

在您的示例中,第二行只有 7 个组件。每个组件占据一列。

默认情况下,如果没有向该列添加任何组件,则该列的默认大小为 0,因此您不能仅仅说一个组件占用两个单元格,因为 GridBagLayout 不知道第二列的含义应该是。

如果您希望第 5 周占据两列,那么您确实需要创建一个包含 8 列的网格。

这可以通过添加如下代码来完成:

GridBagLayout gbl = new GridBagLayout();
yourPanel.setLayout( gbl );

// Set up a grid with 8 columns.
// The minimum width of a column is 50 pixels

int[] columns = new int[8];
Arrays.fill(columns, 50);
gbl.columnWidths = columns;

现在 GridBagLayout 可以理解任何没有实际组件的列的列宽。

因此,第 5 周按钮应该位于 Janvier 和 Fevrier 的下方。

参见:Creating a board game layout using JLayeredPane使用此基本方法的完整工作示例。

关于java - 为什么网格不遵守约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59956093/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com