我是java的新手,仍然不完全理解库的工作原理 .

我想要做的是,我想要一个 JFrame ,在里面我想要两个 JPanels ,一个用于按钮,另一个用于动画 .

我创建了一个自定义 JComponent ,我想在 JPanel 上设置动画 . 这是代码:

public class PaintPart extends JPanel {        

    public PaintPart () {
        Ball b = new Ball(5,5);
        this.setPreferredSize(new Dimension(400,400));
        this.add(b);
        this.setVisible(true);
    }


    public class Ball extends JComponent {
        public Ball (int x, int y) {
            m_x = x;
            m_y = y;
        }

        @Override
        public void paintComponent(Graphics g)  {
            super.paintComponent(g);

            g.setColor(Color.yellow);

            g.fillOval(m_x, m_y, 50, 50);

        }

        public int m_x, m_y;
    }
}

我想在 (m_x, m_y) 上添加Jpanel上的组件 . 当我直接在JFrame上执行此方法时,此方法有效,但在这种情况下,它只是不显示任何内容 .

另外,有趣的是,我可以完美地添加一个JButton,但是使用我的自定义组件,它可能不起作用 . 我究竟做错了什么?