简体   繁体   English

如何逐列填充二维数组

[英]How to populate a 2D array column by column

I am having the following code:我有以下代码:

private final String[] rowNames = {"A","B","C","D","E","F","G","H"};

int rows = 8;
int cols = 12;

JPanel template = new JPanel(new GridLayout(rows,cols,3,3));

for (int i = 0; i < rows;i++) {
    for (int j = 0; j < cols;j++) {
        JLabel label = new JLabel(rowNames[i]+Integer.toString(j+1));
        label.setVerticalAlignment(SwingConstants.TOP);

        //some code here
    }
}

The JPanel is filled with values by row. JPanel 按行填充值。


Example output:示例 output:

[A1 : valueA1,   A2 : valueA2,   A3 : valueA3,   A4 : valueA4,   A5 : valueA5,   A6 : valueA6,  A7 : valueA7 , A8 : valueA8 , A9 : valueA9 , A10 : valueA10 , A11 : valueA11 , A12 : valueA12]
[B1 : valueB1,   B2 : valueB2,   B3 : valueB3,   B4 : valueB4,   B5 : valueB5,   B6 : valueB6,  B7 : valueB7 , B8 : valueB8 , B9 : valueB9 , B10 : valueB10 , B11 : valueB11 , B12 : valueB12]
[C1 : valueC1,   C2 : valueC2,   C3 : valueC3,   C4 : valueC4,   C5 : valueC5,   C6 : valueC6,  C7 : valueC7 , C8:  valueC8 , C9 : valueC9 , C10 : valueC10 , C11 : valueC11 , C12 : valueC12]

                                 etc

I would like the JPanel to be populated by column instead.我希望 JPanel 改为按列填充。 I have tried different codes and I still cannot figure out how to make it work.我尝试了不同的代码,但我仍然无法弄清楚如何使它工作。

private final String[] rowNames = {"A","B","C","D","E","F","G","H","I","J","K","L"};

int rows = 8;
int cols = 12;

JPanel template = new JPanel(new GridLayout(rows,cols,3,3));

for (int j = 0; j < cols;j++) {
    for (int i = 0; i < rows;i++) {
        JLabel label = new JLabel(rowNames[j] + Integer.toString(i+1));
        label.setVerticalAlignment(SwingConstants.TOP);
        //some code here 
    }
}

Expected output:预期 output:

[A1 : valueA1, B1 : valueB1, C1 : valueC1, D1 : valueD1, E1 : valueE1,   F1 : valueF1, G1 : valueG1 , H1 : valueH1 , I1 : valueI1 , J1 : valueJ1 , K1 : valueK1 , L1 : valueL1]
[A2 : valueA2, B2 : valueB2, C2 : valueC2, D2 : valueD2, E2 : valueE2,   F2 : valueF2, G2 : valueG2 , H2 : valueH2 , I2 : valueI2 , J2 : valueJ2 , K2 : valueK2 , L2 : valueL2]
[A3 : valueA3, B3 : valueB3, C3 : valueC3, D3 : valueD3, E3 : valueE3,   F3 : valueF3, G3 : valueG3 , H3 : valueH3 , I3 : valueI3 , J3 : valueJ3 , K3 : valueK3 , L3 : valueL3]

                                       etc

Can anyone help me in how can I display the JLabel as above?任何人都可以帮助我如何显示上面的 JLabel 吗?

Your second attempt is really close, you just need to swap the loops.您的第二次尝试非常接近,您只需要交换循环即可。 For tasks like this I also highly recommend to use more meaningful variable names than i and j .对于这样的任务,我也强烈建议使用比ij更有意义的变量名。

int maxRows = 8;
int maxCols = 12;

JPanel template = new JPanel(new GridLayout(maxRows, maxCols, 3, 3));

for (int row = 0; row < maxRows; row++) {
    for (int col = 0; col < maxCols; col++) {
        JLabel label = new JLabel(rowNames[col] + Integer.toString(row + 1));
        label.setVerticalAlignment(SwingConstants.TOP);
        template.add(label);
    }
}

outputs输出

[A1 B1 C1 D1 E1 F1 G1 H1 I1 J1 K1 L1]
[A2 B2 C2 D2 E2 F2 G2 H2 I2 J2 K2 L2]
[A3 B3 C3 D3 E3 F3 G3 H3 I3 J3 K3 L3]
etc.

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

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