Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我被告知不能从静态上下文引用非静态变量?_Java_Swing_Hyperlink_Jframe_Jbutton - Fatal编程技术网

Java 为什么我被告知不能从静态上下文引用非静态变量?

Java 为什么我被告知不能从静态上下文引用非静态变量?,java,swing,hyperlink,jframe,jbutton,Java,Swing,Hyperlink,Jframe,Jbutton,我正在创建一个按钮,当点击它时,它将直接进入一个网站。但是我的代码有一个错误。错误表示无法从静态上下文引用非静态变量 public static void main(String[] args) throws Exception { JFrame frame = new JFrame("JLinkButton"); frame.getContentPane().setLayout(new BorderLayout()); frame.getContentPane().a

我正在创建一个按钮,当点击它时,它将直接进入一个网站。但是我的代码有一个错误。错误表示无法从静态上下文引用非静态变量

public static void main(String[] args) throws Exception {
     JFrame frame = new JFrame("JLinkButton");
    frame.getContentPane().setLayout(new BorderLayout());
    frame.getContentPane().add("Center", new AnotherLinkButton("www.google.com"));
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setLocation(100, 100);
    frame.setVisible(true);
  }

如果正确定义了另一个链接按钮,则该代码看起来很好

您可能有这样的代码:

class Main {
    class AnotherLinkButton {
    }
}
要创建另一个链接按钮的实例,您需要一个主链接的实例。请尝试以下方法:

class Main {
    static class AnotherLinkButton {
    }
}

这使得
AnotherLinkButton
独立于
Main

始终发布给出错误消息和完整消息的行。抱歉..以下是行:frame.getContentPane().add(“中心”,新的AnotherLinkButton(“www.google.com”)+1他可能用
class
定义了另一个链接按钮
,而不是
static class
@Aaron,但我认为这可能会给出不同的错误消息。我猜AnotherLinkButton有一个构造函数或其他真正导致问题的东西。如果该类是主类的内部类,它会得到一个非静态字段,该字段引用了主类,但在静态上下文中不可用。这就是错误所在。@Aaron,刚刚测试过。我看到了这个错误,
没有可访问的X类型的封闭实例。必须使用类型为X的封闭实例(例如X.new A(),其中X是X的实例)来限定分配。
是否使用与Stepher22相同的Java版本?