Java 无法更改JLabel值
我对NetBeans是新手。我无法在eclipse中运行此功能。当我试着运行它时,我得到一个错误,比如非静态变量不能从静态上下文引用。请帮我解决这个问题Java 无法更改JLabel值,java,spring,swing,awt,Java,Spring,Swing,Awt,我对NetBeans是新手。我无法在eclipse中运行此功能。当我试着运行它时,我得到一个错误,比如非静态变量不能从静态上下文引用。请帮我解决这个问题 InetAddress ip; try { ip = InetAddress.getLocalHost(); String t1= ip.getHostName(); sysname.setText(t1); // HERE IS THE ERROR //sysname.setTe
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);
}
从您发布的异常来看,您向我们展示的代码似乎是一个静态方法,可能是main,而变量sysname是一个实例变量,可能声明为
private JLabel sysname;
在没有实例的情况下,您无法访问实例字段,即从静态上下文访问实例字段。如果它位于主字段中,请按照建议使用它:
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();
根据问题描述,问题在于您正在从main内部引用非静态实例sysname 要引用sysname,您需要有一个似乎没有实例化的实例 简而言之,如果您的代码片段来自main方法,则可以执行以下操作
什么是系统名?声明在哪里?sysname表示JLabel的项目。还添加了周围的函数。这是一条主线吗?可能是静态的,这将解释错误请编辑你的问题,包括一个,而不是你的代码的一部分图片。此外,在使用GUI编辑器之前,请先学习。
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);
}
}
}