Java未解析的JPanel变量?

Java未解析的JPanel变量?,java,eclipse,Java,Eclipse,为什么不能将aniPanel解析为变量。我试过了 AniPanel aniPanel = new AniPanel(); 但这并不能解决问题。我也确保 导入java.swing.JPanel 这是一节课: public class Animation { public JPanel AniPanel; private boolean loop = true; private RenderingHints renderingHints = new Renderin

为什么不能将
aniPanel
解析为变量。我试过了

AniPanel aniPanel = new AniPanel(); 
但这并不能解决问题。我也确保

导入java.swing.JPanel

这是一节课:

public class Animation {

    public JPanel AniPanel;

    private boolean loop = true;

    private RenderingHints renderingHints = new RenderingHints(
                RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

     @SuppressWarnings("serial")
    class AniPanel extends JPanel {

            public void paintComponent(Graphics g) {

                Graphics2D g2d = (Graphics2D) g;
                g2d.setRenderingHints(renderingHints);
                draw(g2d);
            }
        }

     public static void main(String[] args){

        Circle C = new Circle(100);

        JFrame jf = new JFrame();

        jf.setTitle("Falling Shapes Animation");
        jf.setSize(600,400);

        aniPanel = new AniPanel();
        jf.getContentPane().add(aniPanel);

        jf.setVisible(true);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.pack();

    }

你的代码有很多错误

首先,Java区分大小写。以下是您的变量声明:

public JPanel AniPanel;
下面是您尝试使用它的地方:

aniPanel = new AniPanel();
注意声明中的大写字母
A
。此外,您试图从静态方法使用它,因此您需要为它指定一个实例,或者将其设置为静态变量。应该是:

public static JPanel aniPanel;
。。。或者更喜欢:

private static JPanel aniPanel;
更好的是,将其设置为局部变量,而不是字段-无论如何,您只能在
main
中使用它。因此,只需删除当前声明,然后使用:

AniPanel aniPanel = new AniPanel();

然后,您将遇到一个问题,即它是一个内部类,这意味着您需要一个
Animation
的实例来创建
AniPanel
的实例。您可以通过使
AniPanel
成为静态嵌套类,或者从
Animation
中删除它(使其成为顶级类)来修复此问题。就我个人而言,我建议尽可能避免嵌套类,特别是如果您对Java比较陌生的话。您应该完全删除
循环
变量(您从不使用它),并将
渲染提示
移动到
AniPanel

AniPanel
类中,如果您想要静态访问,则字段必须是静态的