Ваш ComboBox
помечен @FXML
, что означает, что экземпляр будет введен FXMLLoader
.Этот внедренный экземпляр заменит созданный вами экземпляр.Вместо этого вы должны заполнить ComboBox
из initialize
метода (см. Введение в FXML ).
import javafx.scene.control.ComboBox;
public class Controller {
@FXML
private ComboBox<String> comboBox;
@FXML
private void initialize() {
// Must declare myClass instance somewhere
comboBox.getItems().setAll(myClass.getNames());
}
}
Обратите внимание, что я также сделал ComboBox
универсальный (и не final
). Избегайте использования необработанных типов .
Несмотря на то, что вышеприведенное верно, использование final
усложняет ситуацию.Из некоторого быстрого тестирования выясняется, что FXMLLoader
не пытается вводить поля final
(что имеет смысл).Однако созданный вами ComboBox
не тот, который был добавлен в граф сцены.Другими словами, FXMLLoader
все еще создает свой собственный ComboBox
, который используется для построения графического интерфейса.