首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fxml getTitle方法不能由FXMLLoader解释

fxml getTitle方法不能由FXMLLoader解释
EN

Stack Overflow用户
提问于 2017-07-26 08:32:47
回答 1查看 328关注 0票数 1

我的FXML代码有问题。我想在初始化阶段标题时获得它的字符串,但是当我试图调用操作stage.getTitle()时,FXMLLoader会抛出一个异常。我还试图在其他方法中获得标题,但它只在其中一些方法中起作用。有人能告诉我那里有什么问题吗?

这是初始化阶段的地方:

代码语言:javascript
复制
@FXML
private void handleModellAction(ActionEvent event) throws IOException{
    FXMLLoader load = new FXMLLoader(getClass().getResource("InEX.fxml"));
    Parent root = (Parent) load.load();
    Stage stage = new Stage();

    stage.setScene(new Scene(root));
    stage.show();

    link = (Hyperlink) event.getTarget();
    model = link.getText();

    stage.setTitle(model);
}

这是控制器类中的初始化方法:

代码语言:javascript
复制
public void getTitle(){
    System.out.println(this.stage.getTitle());
}

@Override
public void initialize(URL url, ResourceBundle rb) {
    image = new Image("images/test.png", 1500, 900, true, true);
    interieurImg.setImage(image);

    model = this.stage.getTitle();
}

这是引发的异常:

代码语言:javascript
复制
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException     
   at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1774)         
   at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1657)      
   at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)       
   at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)      
   ... 52 more      

   Caused by: javafx.fxml.LoadException: file:/C:/Users/p356545/Documents/NetBeansProjects/VFAfxml3/dist/run1293777989/VFAfxml3.jar!/vfafxml3/Interieur.fxml        
   at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601)   at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2579)        
   at ...       
   at vfafxml3.InEXController.handleInterieurAction(InEXController.java:58)     ... 62 more         

   Caused by: java.lang.NullPointerException        
   at vfafxml3.InterieurController.getTitle(InterieurController.java:49)        
   at vfafxml3.InterieurController.initialize(InterieurController.java:88)      
   at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548)     ... 70 more
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-26 12:46:45

在初始化方法中获得阶段标题为时尚早。在使用以下实现初始化阶段之后,您可以在任何其他方法中获得它:

代码语言:javascript
复制
public String getTitle(){
    Stage stages = (Stage) anyChoosenElement.getScene().getWindow();
    String modelString = stages.getTitle();
    return modelString;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45321510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档