почему я не могу изменить текст в JLabel с общедоступного static void main? - PullRequest
0 голосов
/ 23 марта 2012

Я новичок в netbeans и java swing, но тоже в замешательстве.Я поместил некоторые JLabel от перетаскивания в NetBeans с некоторым текстом, и теперь я хочу изменить этот текст из кода, и я получаю сообщение об ошибке, что нестатическая переменная не может быть передана из статического контекста.help

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

Я пробовал это, и при запуске приложения JLabel все еще со старым текстом

Ответы [ 2 ]

3 голосов
/ 23 марта 2012

Поскольку вы пытаетесь изменить свой JLabel с 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");
}

Вы можете изменить область по умолчанию / модификатор jLabel1, щелкнув правой кнопкой мыши по компоненту GUI, затем Properties -> Code -> Variable Modifiers

1 голос
/ 23 марта 2012

main является статической функцией, а JLabel является нестатическим членом класса, и вы не можете получить доступ к нестатическим членам из статической функции.

Youнеобходимо делегировать настройку текста функции-члену (которая не является статической) экземпляра класса, который вы создали в своей главной.

Теперь, если вы не понимаете, что такое статические иНестатичное среднее в этом контексте - пожалуйста, обратитесь к хорошей книге.

...