-1

在我的 JPanel 中,我使用的是 tablelayout.jar Oracle 库(请看这里),因此,一般来说,我必须执行以下操作:

private double[][] size = {
        {30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30},
        {30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30}
};
JPanel p = new JPanel();
p.setLayout(new TableLayout(size));

其中“30”分别是 cos 和 rows 的维度。在这种情况下,我们需要方形单元格。所以我可以这样做,例如:

p.add(new JButton(), "1,4" /*"col,row"*/);

我们认为像这样声明“大小”矩阵并不好,因此我们将初始化更改如下:

size = new double[Constants.GUI_ROWS][Constants.GUI_COLS];
for (int i=0; i<Constants.GUI_COLS-1; i++) 
  for (int j=0; j<Constants.GUI_ROWS-1; j++)
    size[i][j] = 30;

在哪里

Constants.GUI_COLS = 19 ({30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30}) 

Constants.GUI_ROWS = 17 ({30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30})

但这不起作用。当我们尝试向 JPanel 添加一些东西时,什么都不会显示。它只有在我们手动编写第一个初始化时才有效。为什么这个?

4

2 回答 2

3

为了达到与手动相同的效果,您可以使用

double size[][];
size = new double[2][];
size[0]=new double[19];
size[1]=new double[17];
for (int i=0; i<19; i++)
    size[0][i] = 30;

for (int i=0; i<17; i++)
    size[1][i] = 30;
于 2015-01-21T13:09:44.643 回答
1

您将循环条件减一。应该 :

for (int i=0; i<Constants.GUI_COLS; i++) 
  for (int j=0; j<Constants.GUI_ROWS; j++)
    size[i][j] = 30;

请注意,如果此调用

p.setLayout(new TableLayout(size));

在这个电话之前:

size = new double[Constants.GUI_ROWS][Constants.GUI_COLS];

引用的旧数组size将由TableLayout.

于 2015-01-21T12:53:38.017 回答