我是netbeans和java swing的新手,但也很困惑。我把一些JLabel的拖放用netbeans中的一些文本,现在我想从代码中更改该文本,而我得到的错误非静态变量不能从静态上下文中引用。 帮助
FirstFrame f = new FirstFrame();
f.labSifra.setText("aaaa");
我试过这个,当我启动应用程序时,JLabel仍然使用旧文本
答案 0 :(得分:3)
因为您尝试从static void main
public static void main(String[] args) {
//NetBeans GUI Init
}
在您从NetBeans生成的代码中的某处:
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");
}
您可以通过右键单击GUI Component然后Properties -> Code -> Variable Modifiers
答案 1 :(得分:1)
main
是一个静态函数,JLabel是该类的非静态成员,您无法从静态函数访问非静态成员。
您需要将文本的设置委托给您在主体中构建的类实例的成员函数(非静态)。
现在,如果你不明白这个背景下的静态和非静态含义 - 请参阅一本好书。