我有两个窗口控制器,它们都加载FXML文件并显示一个屏幕。第一个,GUIController是主窗口,它产生第二个窗口,PackageBuilder,用户在其中输入一些数据并存储。
第二个窗口是通过主窗口中的Button生成的(FXML链接):
@FXML private void onNewPackage(ActionEvent e){
PackageBuilder pb = new PackageBuilder(owner); // Scene owner
}
我认为第二个类不能调用JavaFX Application启动方法,并且需要传递原始场景。所以我在PackageBuilder中写了这个:
public PackageBuilder(Scene owner) {
/* Removed redundant setup info */
fstart(owner);
}
private void fstart(owner) {
Stage window = new Stage();
window.initModality(Modality.APPLICATION_MODAL);
FXMLLoader loader;
Scene scene;
try {
loader = new FXMLLoader(getClass().getResource("PackageBuilder.fxml"));
scene = new Scene(loader.load());
window.initOwner(owner);
window.setScene(scene);
window.showAndWait();
} catch (IOException e) {
e.printStackTrace();
}
}
如果可以调用initialize-method,这一切都会很好。但它无法实现。那么有没有办法在其他任何地方初始化ChoiceBox的元素?
我假设某处有一个愚蠢的错误。总是有。
答案 0 :(得分:-1)
要初始化ChoiceBox的第二个类可以实现一个接口:
public class PackageBuilder implements Initializable{
@Override
public void initialize(URL url, ResourceBundle rb){
/* Initialize things needed */
}
}
在类的构造函数之前调用该方法。