为什么更改 JLabel 的 bg 颜色会打开另一个 JFrame

Why changing the bg color of a JLabel opens another JFrame

所以我正在尝试在 JAVA 中创建一个国际象棋游戏(自学)。
我使用 JFrame 创建框架,使用 JPanel 将其添加到框架,使用 JLabel 定义棋盘的方块。
我想通过单击它来更改图块的颜色,我正在使用这样的东西: 这是鼠标点击的方法

@Override
public void mouseClicked(MouseEvent e) {
    this.x = e.getX();
    this.y = e.getY();
    System.out.println("X: " + this.x + "; Y:" + this.y);
    GUI GUIOBject = new GUI();
    GUIOBject.clickOnTile(this.x, this.y);
}

这里调用的函数,GUIObject.clickOnTile(int x, int y);是这样的:

public void clickOnTile(int x, int y){
    this.labels[x/60 + y/60*8].setBackground(Color.blue);
}

问题是这样做我每次点击某处都会得到一个新的window。

因此,当我单击某个图块时,它会为正确的图块着色,但会打开一个新图块。 知道这是为什么吗?我怎样才能只在那个框架中进行更改?

这是完整的源代码:
Main.java

public static void main(String[] args){

    GUI graphic_user_interface = new GUI();

}

GUI.java:
public JFrame frame;
public JPanel panel;
public JLabel[] labels;
public String[] positions = {"a", "b", "c", "d", "e", "f", "g", "h"};

public GUI(){
    this.createFrame();
    this.createPanel();
    this.createLabels();
    this.addPanel();
    this.addLabels();
    this.setFrameVisible();
}

public void clickOnTile(int x, int y){
    this.labels[x/60 + y/60*8].setBackground(Color.blue);
}


@Override
public void createFrame() {
    this.frame = new JFrame();
    this.frame.setSize(500, 500);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

@Override
public void createPanel() {
    this.panel = new JPanel();
    this.panel.setLayout(new GridLayout(8,8));
    JPanel panel = new JPanel();
}

private void createLabels(){
    this.labels = new JLabel[64];
    for (int i = 0; i < 8; i++) {
        for (int j = 0; j <8; j++) {
            this.labels[i*8 + j] = new JLabel(this.positions[j] + (i+1));
            this.labels[i*8 + j].setBounds(i*10, i*10, 50, 50);
            this.labels[i*8 + j].setBorder(BorderFactory.createEtchedBorder(1));
            this.labels[i*8 + j].setOpaque(true);

            if(i%2 == 0){
                if(j%2 == 0){
                    this.labels[i*8 + j].setBackground(Color.black);
                }else{
                    this.labels[i*8 + j].setBackground(Color.white);
                }
            }else{
                if(j%2 == 1){
                    this.labels[i*8 + j].setBackground(Color.black);
                }else{
                    this.labels[i*8 + j].setBackground(Color.white);
                }
            }

        }

    }
}

private void addPanel(){
    this.frame.add(this.panel);
}

private void addLabels(){
    for (int i = 0; i < 64; i++) {
        this.panel.add(this.labels[i]);
    }
}

private void setFrameVisible(){
    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
    this.frame.setLocation(dim.width/2-this.frame.getSize().width/2, dim.height/2-this.frame.getSize().height/2);
    this.frame.getContentPane().addMouseListener(new Mouse());
    this.frame.setVisible(true);
}

Mouse.java:
public静态整数x; public 静态整数 y;

@Override
public void mouseClicked(MouseEvent e) {
    this.x = e.getX();
    this.y = e.getY();
    System.out.println("X: " + this.x + "; Y:" + this.y);
    GUI GUIOBject = new GUI();
    GUIOBject.clickOnTile(this.x, this.y);
}

@Override
public void mousePressed(MouseEvent e) {
}

@Override
public void mouseReleased(MouseEvent e) {
}

@Override
public void mouseEntered(MouseEvent e) {
}

@Override
public void mouseExited(MouseEvent e) {
}

IGUI(界面):

public void createFrame();
public void createPanel();

发现问题:

在鼠标中 class 我创建了一个新对象,然后调用函数为 JLabel 着色。
我将标签变量设为静态,然后在 Mouse class 中更改它,它工作得很好。