我是NetBeans的新手。我无法在日食中运行它。当我尝试运行此操作时,出现non static variable cannot be referenced from static context
之类的错误。请帮我解决。
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);
}
答案 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);
}
}
}