Java 重新油漆();不调用绘制方法

Java 重新油漆();不调用绘制方法,java,paint,repaint,Java,Paint,Repaint,我知道这个问题以前已经被问过好几次了,但似乎没有一个答案适合我。 我正在尝试创建一个双陆棋游戏,当我开始研究这个游戏时,我遇到了一个早期的问题:重新绘制();未调用paintComponent方法。我将它与我的其他一些正常工作的代码进行了比较,没有发现任何显著的差异 public class World extends JPanel implements ActionListener { Player1 p1; Player2 p2;

我知道这个问题以前已经被问过好几次了,但似乎没有一个答案适合我。 我正在尝试创建一个双陆棋游戏,当我开始研究这个游戏时,我遇到了一个早期的问题:重新绘制();未调用paintComponent方法。我将它与我的其他一些正常工作的代码进行了比较,没有发现任何显著的差异

    public class World extends JPanel implements ActionListener
    {
        Player1 p1;
        Player2 p2;
        Board b;
        Timer tm;

        public World()
        {
            setFocusable(true);
            p1 = new Player1();
            p2 = new Player2();
            b = new Board();
            tm = new Timer(5, this);
            tm.start();
        }

        public void paintComponent(Graphics g)
        {
            System.out.println("Called World Paint");
            super.paintComponent(g);
            p1.paintComponent(g);
            p2.paintComponent(g);
            b.paintComponent(g);
        }
        public void actionPerformed(ActionEvent e)
        {
            System.out.println("Called actionPerformed");
            p1.move();
            p2.move();
            repaint();
        }
    }
与所有适当的进口。
我知道正在访问actionPerformed方法。

repaint()的实现在哪里?可能是您的面板从未在显示的窗口中添加/布局。。。或者其他很多原因。。。请提供更接近可执行示例的内容…摆脱
paint
方法,直接重写
paintComponent
。组件不会被绘制的一个原因是,如果它实际上不在屏幕上,可见,大小和可绘制区域内。我曾经尝试过这样做,但没有任何帮助。