有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么我不能从publicstaticvoidmain更改JLabel中的文本?

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

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

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


共 (2) 个答案

  1. # 1 楼答案

    因为您试图从static void main修改JLabel

    public static void main(String[] args) {
     //NetBeans GUI Init
    }
    

    在由NetBeans生成的代码中,您有:

    private javax.swing.JLabel jLabel1;
    

    例如,如果将JButton放到form builder中并双击它,您将获得以下方法:

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

    您可以通过在GUI组件上单击鼠标右键,然后Properties -> Code -> Variable Modifiers来更改jLabel1的解除作用域/修饰符

  2. # 2 楼答案

    main是一个静态函数,JLabel是类的非静态成员,您不能从静态函数访问非静态成员

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

    现在,如果您不明白在本文中静态和非静态的含义,请参阅一本好书