2013-04-04 127 views
0

所以,我在Java(NetBeans)的共享变量中挣扎。我有一个类与变量 - 让我们叫它statlbl。所以它是一个不可编辑的标签,其内容被另一个类改变。共享变量出错

这是缝合......我完全不知道如何改变位于一个类别中的标签与其他类别。

下面的代码的提取:

//Print the ip address 
System.out.println("This server's IP Address: " + ipAddress); TS_Entity.statlbl.setText("This server's IP Address: " 
    + ipAddress); 
     try { 
      Thread.sleep(1000L); 
     } catch (Exception e) { 
     } 

调试时,IDE将显示包含内容的错误,

“非静态变量不能从静态上下文中引用”任何帮助将是不胜感激!

+0

你是否在你的类中声明了变量'public'和'static'?例如'公共静态TextView statlbl;' – Houssni 2013-04-04 16:43:07

回答

0

您还没有TS_Entity类的对象。您需要创建它的一个实例:

TS_Entity tsEntity = new TS_Entity(); 

访问非静态字段。静态字段是来自类的字段,而不是单个实例。对于其他所有字段,在示例中您需要一个对象的实例,如tsEntity

+0

谢谢你的答案。我已经按照你的方法,至少删除了错误。接下来的问题是标签没有按照程序改变。初始值为“READY ...” 程序启动一个类,该类必须将标签的值更改为启动第二个类的原始类中的某些文本。 – 2013-04-05 00:47:50

+0

标签(变量)在netbeans自定义代码中设置为公共静态 – 2013-04-05 00:55:09

+0

您需要为您显示的标签提供参考。就像在我的例子中一样,您正在创建TS_Entity的新实例,并且此对象中的更改不会影响同一类中的其他人(除非在静态上下文中)。 – 2013-04-05 12:55:51

0

该错误表示您的变量statlbl不是静态的。您需要拥有TS_Entity类型的对象,比如entity。您的命令然后将是

entity.statlbl.setText("This server's IP Address: " + ipAddress); 

要么是,要么使statlbl一个静态变量。

0

您正在使用的变量statlbl是一个非静态变量。但是你试图从一个本身是静态的方法访问这个非静态变量statlbl

这在java中是不可能的。您必须声明statlbl变量为静态。

从静态方法访问非静态字段,你需要创建一个这样的对象实例:

TS_Entity en = new TS_Entity();

现在您可以使用此对象的setter方法更改statlbl的值。