无法调用“javafx.scene.control.combobox.getitems()”,因为“controller.getmybox()”的返回值为null

0sgqnhkj  于 2021-06-30  发布在  Java
关注(0)|答案(0)|浏览(209)

不知何故,我无法从另一个类向combobox变量添加项,因为它总是说variable的值为null或者getter的返回值为null。
我使用scene builder构建sample.fxml,以controller作为控制器类,从userinterface类中导出整个过程
fxml公司

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <?import javafx.scene.control.ComboBox?>
  3. <?import javafx.scene.layout.BorderPane?>
  4. <BorderPane xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="Controller">
  5. <center>
  6. <ComboBox fx:id="myBox" prefWidth="150.0" BorderPane.alignment="CENTER" />
  7. </center>
  8. </BorderPane>

控制器

  1. public class Controller {
  2. @FXML
  3. private ComboBox<String> myBox;
  4. public ComboBox<String> getMyBox() {
  5. return myBox;
  6. }
  7. public void initialize() {
  8. ObservableList<String> defaultTicker = FXCollections.observableArrayList("Something");
  9. myBox.getItems().addAll(defaultTicker);
  10. }
  11. }

用户界面

  1. public class UserInterface extends Application {
  2. @Override
  3. public void start(Stage primaryStage) {
  4. try {
  5. FXMLLoader loader = new FXMLLoader(getClass().getResource("Sample.fxml"));
  6. Parent root = loader.load();
  7. Controller controller = new Controller();
  8. primaryStage.setTitle("Title");
  9. primaryStage.setScene(new Scene(root));
  10. primaryStage.show();
  11. List<String> addStuff = new ArrayList<String>();
  12. addStuff.add("a");
  13. addStuff.add("b");
  14. addStuff.add("c");
  15. controller.getMyBox().getItems().addAll(addStuff);
  16. } catch (Exception e) {
  17. e.printStackTrace();
  18. }
  19. }
  20. public static void main(String[] args) {
  21. launch(args);
  22. }
  23. }

运行后,界面出现,只有选项“something”。所以我想没问题吧?启动后的界面
我做错了什么?到目前为止,我似乎找不到任何解决办法。
提前谢谢。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题