无法更改JLabel值

时间:2013-09-03 18:26:30

标签: java spring swing awt

我是NetBeans的新手。我无法在日食中运行它。当我尝试运行此操作时,出现non static variable cannot be referenced from static context之类的错误。请帮我解决。

image

InetAddress ip;

try {
    ip = InetAddress.getLocalHost();
    String t1= ip.getHostName();

    sysname.setText(t1);               // HERE IS THE ERROR
    //sysname.setText("hi");           // EVEN THIS ALSO MAKE ERROR
} catch (UnknownHostException ex) {
     Logger.getLogger(mainframe.class.getName()).log(Level.SEVERE, null, ex); 
}

3 个答案:

答案 0 :(得分:0)

从您发布的例外情况来看,您向我们展示的代码似乎是static方法,可能是main(),而变量sysname是实例变量,可能被宣布为

private JLabel sysname;

您无法访问没有实例的实例字段,即来自static上下文。

答案 1 :(得分:0)

如果它在您的主要内部,如建议的话,请改为使用它:

public class test {
JLabel sysname;

private void setAdress() {
    InetAddress ip;

    try {
        ip = InetAddress.getLocalHost();
        String t1 = ip.getHostName();

        sysname.setText(t1); // HERE IS THE ERROR
        // sysname.setText("hi"); // EVEN THIS ALSO MAKE ERROR
    } catch (UnknownHostException ex) {
        Logger.getLogger(mainframe.class.getName()).log(Level.SEVERE, null, ex);
    }
}

然后在你的主要:

Test test = new Test();
test.setAdress();

答案 2 :(得分:0)

根据您的问题描述,问题是您从sysname内部引用了非静态实例main

要引用sysname,您需要有一个您似乎无法实例化的实例。

简而言之,如果您的代码段来自main方法,则可以执行以下操作。


public class App {
    private JLabel sysname = new JLabel();

    public static void main() {

            App app = new App();
             app.setIpLabel();

    }

      void setIpLabel() {
     InetAddress ip;

        try {
            ip = InetAddress.getLocalHost();
            String t1 = ip.getHostName();

            sysname.setText(t1); // HERE IS THE ERROR
            // sysname.setText("hi"); // EVEN THIS ALSO MAKE ERROR
        } catch (UnknownHostException ex) {
            Logger.getLogger(mainframe.class.getName()).log(Level.SEVERE, null, ex);
        }
}

}