java - 无法调用“javafx.scene.control.ComboBox.getItems()”,因为“Controller.getMyBox()”的返回值为 null
问题描述
不知何故,我无法从另一个类向我的 ComboBox 变量添加项目,因为它总是说变量的值为 null 或其 getter 的返回值为 null。
我使用 Scene Builder 构建 Sample.fxml,将控制器作为 Controller 类,从 UserInterface 类中获取整个内容
FXML
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.ComboBox?>
<?import javafx.scene.layout.BorderPane?>
<BorderPane xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="Controller">
<center>
<ComboBox fx:id="myBox" prefWidth="150.0" BorderPane.alignment="CENTER" />
</center>
</BorderPane>
控制器
public class Controller {
@FXML
private ComboBox<String> myBox;
public ComboBox<String> getMyBox() {
return myBox;
}
public void initialize() {
ObservableList<String> defaultTicker = FXCollections.observableArrayList("Something");
myBox.getItems().addAll(defaultTicker);
}
}
用户界面
public class UserInterface extends Application {
@Override
public void start(Stage primaryStage) {
try {
FXMLLoader loader = new FXMLLoader(getClass().getResource("Sample.fxml"));
Parent root = loader.load();
Controller controller = new Controller();
primaryStage.setTitle("Title");
primaryStage.setScene(new Scene(root));
primaryStage.show();
List<String> addStuff = new ArrayList<String>();
addStuff.add("a");
addStuff.add("b");
addStuff.add("c");
controller.getMyBox().getItems().addAll(addStuff);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
运行后出现界面,里面只有“Something”选项。所以我猜它初始化很好? 启动后的界面
我做错了什么?到目前为止,我似乎找不到任何解决方案。
提前致谢。
解决方案
推荐阅读
- react-native - 使用 react-native-fs 在 React-Native 中保存文件
- javascript - 如何解决故事书未加载故事的问题?
- android - Flutter 风格不适合 iOS
- java - 使用 swagger2Markup 时发生 NoClassDefFoundError
- java - 无法推断 ArraySortedMap<> 的类型参数
- validation - 如何从 GraphQL 模式创建验证规则
- firebase - Firestore 获取子集合父文档 ID - JavaScript
- typescript - Next.js 源映射与 Sentry 上的打字稿
- arrays - 将 Append 方法添加到泛型 TArray 类型
- c - 使用硬编码 C 批处理脚本重定向日志输出