2014-02-01 4 views
0

Я обновился с javafx 8 b109 до b116, и мой класс контроллера FXML имеет введенные переменные как null, когда он инициализирует. Я попробовал это с примером приложения netbeans fxml.Статические переменные @FXML в контроллере FXML

@FXML 
private static Label label; 

@Override 
public void initialize(URL url, ResourceBundle rb) { 
    label.setText("static test"); 
} 

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

Есть ли способ обойти это без переписывания тысяч строк кода, использующих статический доступ?

+1

Возможный дубликат [проблемы совместимости с javafx 8] (http://stackoverflow.com/questions/23105433/javafx-8-compatibility-issues) – jewelsea

ответ

1

В любом случае я реорганизовал все, и это было не так сложно, как я думал. Я потратил около половины времени на рефакторинг, так как искал решение.

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

0

Большое спасибо за документирование этой проблемы. С прошлой ночи я пытаюсь это исправить. Как и вы, я догадался, что введенные переменные являются нулевыми и могут, наконец, сформировать мой вопрос, чтобы запросить веб-решение. Я нашел вашу запись здесь.

Для этой проблемы я предлагаю быстрое грязное решение, я удалил статическое ключевое слово из объявления исходного имени переменной в то же время, когда я объявил статический эквивалент его вставки символа _ в конце исходного имени. В initialize() я скопировал введенные объекты в статические копии без необходимости рефакторировать все мои статические внутренние классы и методы.

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