Java 如何重新绘制鼠标组件所连接的JComponent?

Java 如何重新绘制鼠标组件所连接的JComponent?,java,swing,repaint,Java,Swing,Repaint,我制作了一个8x8网格,我希望在单击时重新绘制正方形 网格中的每个方块在技术上都是一个棋子方块(扩展JComponent的I类)。有一个用于切换棋盘格属性的鼠标侦听器,棋盘格的paintComponent(图形g)将被覆盖,以基于该属性以不同方式绘制组件。鼠标侦听器附加在棋盘格构造函数中 我困惑的是如何在toggle方法的末尾重新绘制正方形。我尝试的是: public void toggleIsTaken(){ if(isTaken){ isTaken = false;

我制作了一个8x8网格,我希望在单击时重新绘制正方形

网格中的每个方块在技术上都是一个棋子方块(扩展JComponent的I类)。有一个用于切换棋盘格属性的鼠标侦听器,棋盘格的paintComponent(图形g)将被覆盖,以基于该属性以不同方式绘制组件。鼠标侦听器附加在棋盘格构造函数中

我困惑的是如何在toggle方法的末尾重新绘制正方形。我尝试的是:

public void toggleIsTaken(){
if(isTaken){
        isTaken = false;
    } else {
        isTaken = true;
    }
    repaint();
}

这不会在单击时执行任何操作,我假设这是因为“重新绘制”没有附加到任何特定的内容。我不确定我能为要重新粉刷的广场重新粉刷什么。有什么想法吗?

repaint
应该向
RepaintManager
请求在指定组件的事件队列上安排重新绘制事件,因此是的,它应该可以工作。考虑提供一个说明你的问题的方法。这将减少混乱和更好的响应我现在将致力于创建可运行的示例,但是当您说它重新绘制指定的组件时,如果我在调用repaint()之前没有声明,它如何知道指定了哪个组件?你是说它应该重新绘制侦听器连接到的任何内容吗?它将重新绘制发出请求的组件(自身)。这正是我所需要的。这让我明白,我只是在画一条没有方向的线。我把drawLine处理得像drawRect,并指定x、y、宽度和高度,所有12个都没有。