有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法调用“javafx.scene.control.ComboBox.getItems()”,因为“Controller.getMyBox()”的返回值为空

不知何故,我无法从另一个类向ComboBox变量添加项,因为它总是说变量的值为null,或者它的getter的返回值为null

我使用场景生成器构建示例。fxml将控制器作为控制器类,luanch将整个过程组成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);
    }
}

运行后,界面出现,其中只有“某物”选项。所以我想没问题吧? The interface after launch

我做错了什么?到目前为止,我似乎找不到任何解决办法

提前谢谢


共 (0) 个答案