Java未解析的JPanel变量?

标签 java eclipse

为什么aniPanel不能解析为变量。我已经尝试过

AniPanel aniPanel = new AniPanel(); 

但这并不能解决问题。我也确保

导入java.swing.JPanel

这是类(class):

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 比较陌生。您应该完全删除 loop 变量(您从不使用它)并将 renderingHints 移至 AniPanel 中。

关于Java未解析的JPanel变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22333654/

相关文章:

java - Java 和 Eclipse IDE 中的 UTF-8 和字符

java - OS X gzip 可以配置为匹配 Java GZIPOutputStream 吗?

eclipse - 有没有办法在 Eclipse 中命中断点时发出音频警报?

android - 通过 Eclipse 在 Android 应用程序中包含一个数据库文件

python - 终端中是否有任何命令可以在 virtualenv 中找到 Python 的路径?

java - 在 Android 上使用 Retrofit 正确解析 JSON

java - 带有 @JsonProperty defaultValue 处理的 Jackson 模块

java - GAE : 30-40 Second Queries to Cloud SQL

eclipse - 哪个是最好的 RCP 平台

java - 依赖项的 Jar 未部署到 Web 项目