2012-03-23 59 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中构建的类的实例的成员函数(非静态)。

现在,如果您不明白在这方面的静态和非静态含义 - 请参阅一本好书。

相关问题