用于棋盘设计的JLabel阵列

时间:2014-04-13 19:03:45

标签: user-interface jlabel

我根本无法使用JLabel显示我的棋盘图形。我不确定为什么它不起作用。我在没有使用数组的情况下创建它时确实让它工作,但代码非常长。我做错了什么?

import javax.swing.*;
import java.awt.*;

public class GuiProgramTwo_1 extends JFrame   {
    public GuiProgramTwo_1() {
        JPanel p1 = new JPanel();       
        p1.setLayout(new GridLayout(6, 6));

        JLabel[] array = new JLabel[69];

        JLabel a1 = new JLabel();
        a1.setBackground(Color.BLACK);
        a1.setOpaque(true);

        JLabel a2 = new JLabel();
        a2.setBackground(Color.WHITE);
        a2.setOpaque(true);

        array[0] = new JLabel();
        array[0] = a1;

        p1.add(array[0]);

        for(int i = 1; i < 69; i++) {
            int x = i - 1;
            array[i] = new JLabel();
            if(array[x] == a1)  {
                array[i] = a2;
            }
            else    {
                array[i] = a1;
            }
            p1.add(array[i]); 
        }

    add(p1, BorderLayout.CENTER);

    }
    public static void main(String[] args) {
        GuiProgramTwo_1 frame = new GuiProgramTwo_1();
        frame.setTitle("ShowFlowLayout");
        frame.setSize(575, 400);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

1 个答案:

答案 0 :(得分:0)

您需要为布局中的每个位置使用唯一的JLabel,您不能重复使用组件并同时将它们显示在应用程序的不同区域。

此外,您的GridLayout构造可能有误,您指定了6行和6列,指定了36个组件的空间,但看起来您想要添加总共69个JLabel。

p1.setLayout(new GridLayout(6, 6));