gpt4 book ai didi

java - 没有封闭实例错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:15:42 26 4
gpt4 key购买 nike

所以我正在阅读一本 Java 书籍,然后我来到了这个程序。但是,当我在 Eclipse 中使用它时,它会给我一个 No Enclosing Instance of type .... error

我很困惑为什么会弹出这个错误。这是我的代码:

我已经注释了给出错误的行

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

public class HelloJava2
{
public static void main(String[] args)
{
JFrame frame = new JFrame("Hello, Java2!");
/*
HelloComponent2 newObject = new HelloComponent2("Hello, Java!");
*/
frame.add(newObject);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setVisible(true);

}

class HelloComponent2 extends JComponent implements MouseMotionListener
{
String theMessage;
int messageX = 125, messageY = 95;

public HelloComponent2(String message)
{
theMessage = message;
addMouseMotionListener(this);
}

public void paintComponent( Graphics g )
{
g.drawString( theMessage, messageX, messageY);
}

public void mouseDragged(MouseEvent e)
{
messageX = e.getX();
messageY = e.getY();

repaint();
}

public void mouseMoved(MouseEvent e)
{

}
}
}

如果有人能解释为什么我会收到此错误以及将来如何修复/避免它,我将不胜感激。提前致谢!

最佳答案

这是因为您正试图从静态方法实例化非静态内部类。

Java 有两种可以在类级别嵌套的内部类——静态的和非静态的。非静态类有一个对其“外部”类的实例的引用,它们在其中被实例化。这允许非静态内部类访问其外部类的实例变量。静态类,例如您的 HelloComponent2,不访问其外部类的实例变量。这使您可以从静态函数实例化此类。

使类 static 应该可以解决问题:

static class HelloComponent2 extends JComponent implements MouseMotionListener

关于java - 没有封闭实例错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21027537/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com