为什么我不能从public static void main更改JLabel中的文本?

时间:2012-03-23 13:32:49

标签: java swing jlabel netbeans-7

我是netbeans和java swing的新手,但也很困惑。我把一些JLabel的拖放用netbeans中的一些文本,现在我想从代码中更改该文本,而我得到的错误非静态变量不能从静态上下文中引用。 帮助

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

我试过这个,当我启动应用程序时,JLabel仍然使用旧文本

2 个答案:

答案 0 :(得分:3)

因为您尝试从static void main

修改JLabel
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

来更改jLabel1的defualt范围/修饰符

答案 1 :(得分:1)

main是一个静态函数,JLabel是该类的非静态成员,您无法从静态函数访问非静态成员。

您需要将文本的设置委托给您在主体中构建的类实例的成员函数(非静态)。

现在,如果你不明白这个背景下的静态和非静态含义 - 请参阅一本好书。