Java 鼠标将事件拖到面板背景

Java 鼠标将事件拖到面板背景,java,swing,awt,mouselistener,Java,Swing,Awt,Mouselistener,我正在制作一个带有9x12个面板的GUI配对猜谜游戏,每个面板上都有一个随机数。我已经这样做了,当你把鼠标悬停在每个面板上时,它会从红色变为黄色,一旦鼠标离开面板区域,它就会变回红色。 我现在的问题是将单击面板的颜色更改为绿色,将以前单击过的面板的颜色更改为红色。它按预期变为绿色,但我不知道如何在单击新面板后将先前单击的面板重置为红色。我希望有一个明显的答案,但这里有一些相关的代码(没有经过润色): 只需在NumberPanel中创建一个名为current的静态NumberPanel字段: pr

我正在制作一个带有9x12个面板的GUI配对猜谜游戏,每个面板上都有一个随机数。我已经这样做了,当你把鼠标悬停在每个面板上时,它会从红色变为黄色,一旦鼠标离开面板区域,它就会变回红色。 我现在的问题是将单击面板的颜色更改为绿色,将以前单击过的面板的颜色更改为红色。它按预期变为绿色,但我不知道如何在单击新面板后将先前单击的面板重置为红色。我希望有一个明显的答案,但这里有一些相关的代码(没有经过润色):


只需在
NumberPanel
中创建一个名为
current
的静态
NumberPanel
字段:

private static NumberPanel current;

...
// create a static MouseListener instead of creating a new one for each
// NumberPanel instance.
private static final MouseAdapter mouseListener = new MouseAdapter(){

    public void mousePressed(MouseEvent event) {
        NumberPanel panel = (NumberPanel) event.getSource(); 
        if(current != null) { 
            current.mouseClicked = false;
        }
        current = panel;
        panel.mouseClicked = true;
        // repaint number panels container
    }
}
...
addMouseListener(mouseListener);
类似的内容应该可以跟踪当前单击的面板。

“我现在的问题是…”。形成问题?你的问题是什么?
private static NumberPanel current;

...
// create a static MouseListener instead of creating a new one for each
// NumberPanel instance.
private static final MouseAdapter mouseListener = new MouseAdapter(){

    public void mousePressed(MouseEvent event) {
        NumberPanel panel = (NumberPanel) event.getSource(); 
        if(current != null) { 
            current.mouseClicked = false;
        }
        current = panel;
        panel.mouseClicked = true;
        // repaint number panels container
    }
}
...
addMouseListener(mouseListener);