2013-04-04 53 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的值。