2013-04-04 2 views
0

Итак, я борюсь с общими переменными в Java (NetBeans). У меня есть один класс с переменной - давайте назовите его statlbl. Таким образом, это не редактируемый ярлык, и его содержимое изменяется другим классом.Ошибка с общими переменными

Вот это ... Я абсолютно НЕ знаю, как изменить ярлык, расположенный в одном классе, с другим классом.

Вот извлечение кода:

//Print the ip address 
System.out.println("This server's IP Address: " + ipAddress); TS_Entity.statlbl.setText("This server's IP Address: " 
    + ipAddress); 
     try { 
      Thread.sleep(1000L); 
     } catch (Exception e) { 
     } 

При отладке, среда выводит сообщение об ошибке с описанием, «Non-статическая переменная не может ссылаться из статического контекста»

Любая помощь будет оценили!

+0

Вы объявили переменную в своем классе как «public» и «static»? например 'public static TextView statlbl;' – Houssni

ответ

0

У вас нет объекта класса TS_Entity. Вам необходимо создать экземпляр:

TS_Entity tsEntity = new TS_Entity(); 

для доступа к не статическим полям. Статические поля - это поля из класса, а не один экземпляр. Для каждого другого поля вам понадобится экземпляр объекта, например tsEntity, в примере.

+0

Спасибо за ответ. Я следил за вашим методом и, по крайней мере, удалял ошибку. Следующая проблема заключается в том, что метка не изменяется, как запрограммировано. Значение init - «READY ...» Программа запускает класс, который должен изменить значение метки для определенного текста в исходном классе, из которого запускается второй класс. –

+0

Метка (переменная) устанавливается в пользовательском коде netbeans как Public Static –

+0

Вам нужна ссылка для отображаемой метки. Как и в моем примере, вы создаете новый экземпляр TS_Entity, и изменения в этом объекте не будут влиять на других из того же класса (кроме статического контекста). –

0

Ошибка означает, что ваша переменная statlbl не является статической. Вы либо должны иметь объект типа TS_Entity, скажем entity. Ваша команда будет затем

entity.statlbl.setText("This server's IP Address: " + ipAddress); 

Либо это, либо сделать statlbl статической переменной.

0

Переменная statlbl, которую вы используете, является нестационарной переменной. Но вы пытаетесь получить доступ к этой нестатической переменной statlbl из самого статического метода.

Это невозможно в java. Вы должны объявить statlbl переменной как статическую.

Чтобы получить доступ к не-статические поля от статического метода, необходимо создать экземпляр объекта, как это:

TS_Entity en = new TS_Entity();

Теперь вы можете изменить значение statlbl, используя метод setter этого объекта.

Смежные вопросы