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

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

不知何故,我无法从另一个类向combobox变量添加项,因为它总是说variable的值为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”。所以我想没问题吧?启动后的界面
我做错了什么?到目前为止,我似乎找不到任何解决办法。
提前谢谢。

暂无答案!

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

相关问题