我根本无法使用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);
}
}
答案 0 :(得分:0)
您需要为布局中的每个位置使用唯一的JLabel,您不能重复使用组件并同时将它们显示在应用程序的不同区域。
此外,您的GridLayout构造可能有误,您指定了6行和6列,指定了36个组件的空间,但看起来您想要添加总共69个JLabel。
p1.setLayout(new GridLayout(6, 6));