如何使我的 JButton 计数并更改我的显示?

How do I make my JButton count and change my display?

所以我正在制作一个国际象棋游戏的互动绘画。基本上,目前只有 2 个按钮:下一步和上一步。下一个移动按钮将int变量moveNum加1,上一个移动按钮将int变量moveNum减1。基本上是这样的:

int moveNum = 0;
public void actionPerformed(ActionEvent e)    
{ 
    if(e.getActionCommand().equals("Next Move"))
    {
        moveNum++;
        Display.instance.repaint();
    }

    else if(e.getActionCommand().equals("Previous Move"))
    {
        moveNum--; 
        Display.instance.repaint();   
    }

}

然后我只有大量图形,每个图形对应 moveNum 的每个值。它看起来有点像这样:

public void paintComponent(Graphics g)
{
    super.paintComponent(g);       
    Graphics2D g2d = (Graphics2D)g; 
    g2d.setColor(Color.BLACK);        

    if (moveNum == 0)
    {
         g2d.fill(new Rectangle2D.Double(0, 0, 10, 10));//just for simplicity
    }
    else if (moveNum == 1)
    {
        g2d.fill(new Rectangle2D.Double(0, 0, 10, 10));
        g2d.fill(new Rectangle2D.Double(0, 0, 20, 10));  //again for simplicity
    }
    else if (moveNum ==2)
    {
        g2d.fill(new Rectangle2D.Double(0, 0, 10, 10));
        g2d.fill(new Rectangle2D.Double(0, 0, 20, 10));
        g2d.fill(new Rectangle2D.Double(0, 0, 30, 10)); //simplicity
        
    } 
...
}

但是当我按下按钮时图形没有改变。我可能缺少什么?

更新:我曾尝试在 moveNum 之后调用 Display.instance.repaint(),但现在我根本看不到任何图形。可能是什么问题?

更新 #2:正在执行绘画组件,因为当我输入 System.out.println("Test");该方法正在打印。我现在也看到了无限递归问题(不知道我以前怎么没看到它)。但即使在修复它之后,我仍然没有得到我想要的图形。我意识到出于某种原因,当我全屏显示时可以获得一些图形。但是按钮仍然不会改变图形。使用 System.out.println("测试");方法,我发现当我 运行 程序时打印一次“测试”,当我全屏显示并获取图形时再打印两次,当我按下下一步按钮时再打印 12 次。我不太确定那里发生了什么,我的按钮设置不正确吗?

最后更新:我没有MRE/SSCE,但我已经解决了我的问题。我已经意识到我是宇宙中最大的白痴之一,我的问题是大写。我的按钮不起作用,因为我在片段 e.getActionCommand().equals("Next Move")) 中将它们中的两个都大写了错误的东西。无论如何,非常感谢您的帮助。我不认为我会发现无限递归问题,非常感谢您的帮助。

尝试在 moveNum++;moveNum--; 之后添加 component.repaint()。 当 component 是您要更新的组件时。

另外,去掉paintComponent(Graphics g)

里面的repaint()