Java 为什么JPanel不显示在框架上?

Java 为什么JPanel不显示在框架上?,java,swing,Java,Swing,我得到了以下代码,这是我遇到的实际问题的简化版本: import javax.swing.*; import java.awt.*; public class Circle { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub JFrame frame = new JFrame();

我得到了以下代码,这是我遇到的实际问题的简化版本:

import javax.swing.*;
import java.awt.*;

public class Circle {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        JFrame frame = new JFrame();
        Painter panel = new Painter();
        frame.getContentPane().setLayout(new BorderLayout());
        frame.getContentPane().add(panel, BorderLayout.CENTER);


        frame.pack();
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }






    import javax.swing.*;
    import java.awt.*;


    public class Painter extends JPanel{

        /**
         * 
         */
        private static final long serialVersionUID = 5663520834139683160L;
        /**
         * @param args
         */



        Painter()
        {
        }

        public void drawPlayer(Graphics g)
        {
            g.setColor(Color.GREEN);
            g.fillOval(0, 0, 200, 30);
            //g.setColor(Color.GREEN);
            //g.drawRect(0, 0, 80, 50);
            //g.setColor(Color.BLUE);
            //g.fillRect(0, 0, 80/2, 50/2);
            //g.setColor(Color.BLACK);
            //g.drawString("BOB", 10/2+10, 5/2);
        }

        @Override

        public void printComponent(Graphics g)
        {
            super.paintComponent(g);
            this.drawPlayer(g);
        }
    }
当我执行它时,JPanel没有出现,我就是找不到错误

不知道这是否重要,但在实际问题中,我在构造函数中使用JFrame的JPanel初始化JFrame,但它也不起作用

如有必要,我可以发布原始代码。实际任务是为ConnectFour游戏提供一个GUI,其中框架分为一个绘制光盘的JPanel和另一个提供玩家信息(如姓名等)的JPanel。第一部分工作正常,但最后一部分就不行了。(不要被我贴出的画圆圈的代码弄糊涂了。我想在玩家信息面板上贴出我正在考虑的解决方案的结构。)

为什么JPanel不显示在框架上

应该重写
paintComponent()
方法,而不是
printComponent()
方法

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

哇,这真是太尴尬了。我只是没有注意到这一点。谢谢!!!