2012-03-23 63 views
-1

我是netbeans和java swing中的新手,但也很困惑。我將一些JLabel從一些文本拖放到netbeans中,現在我想從代碼中更改該文本,並且出現錯誤。無法從靜態上下文中引用非靜態變量。 幫助爲什麼我無法從public static void main更改JLabel中的文本?

FirstFrame f = new FirstFrame(); 
f.labSifra.setText("aaaa"); 

我嘗試這樣做,當我啓動應用程序的JLabel仍與舊文本

+2

請包括[sscce](http://www.sscce.org),否則此問題將被關閉。你已被警告! > _> – mre 2012-03-23 13:33:57

+0

剛剛包含的代碼片段不是sscce。 – mre 2012-03-23 13:50:08

回答

2

因爲你嘗試從static void main

public static void main(String[] args) { 
//NetBeans GUI Init 
} 
通過NetBeans生成的代碼

而且某處修改您的JLabel您有:

private javax.swing.JLabel jLabel1; 

如果你把例如JButton的成表單生成並雙擊你會有方法:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 
    // Here you can change text of JLabel. 
    jLabel1.setText("bla bla"); 
} 

你可以改變jLabel1的默認範圍/修飾符通過右鍵單擊GUI組件然後Properties -> Code -> Variable Modifiers

1

main靜態功能,以及將JLabel類的非靜態成員,以及你不能從靜態函數中訪問非靜態成員。

您需要將文本的設置委託給您在main中構建的類的實例的成員函數(非靜態)。

現在,如果您不明白在這方面的靜態和非靜態含義 - 請參閱一本好書。

相關問題