我对GridBagLayout
不了解。这是截图以解释
对于JTextField "Janvier", gridy = 0, gridx = 1 and **gridwidth = 5**
对于JTextField "Février", gridy = 0, gridx = 5 and gridwidth = 4
对于星期数1, 2, 3 and 4 : gridy = 1, gridx = 0, 1, 2 and 3, and gridwidth = 1
对于星期数5 : gridy = 1, gridx = 4 and gridwidth = 2.
事实上,我想在“ Janvier”和“Février” JTextField下都有第5周。
您对此有何看法?我忘记了什么吗?
谢谢。
对于第5周:网格= 1,网格x = 4,网格宽度= 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,了解使用此基本方法的完整工作示例。