JavaFX可以';t设置标签或文本的文本

JavaFX可以';t设置标签或文本的文本,java,Java,我不知道这为什么不起作用。我想设置标签或文本的文本。(不管哪种方法有效)。标签保持不变。当我使用文本时,应用程序就会崩溃 @FXML 公共短信; @FXML 公共文本标题; @FXML 公共文本结果; @FXML 公共标签lblResult; 公共无效显示(字符串标题、字符串消息)引发IOException{ txtResult=新文本(); lblResult=新标签(); 阶段=新阶段(); 阶段.初始模态(模态.应用\模态); 父根=fxmloader.load(getClass().ge

我不知道这为什么不起作用。我想设置标签或文本的文本。(不管哪种方法有效)。标签保持不变。当我使用文本时,应用程序就会崩溃

@FXML
公共短信;
@FXML
公共文本标题;
@FXML
公共文本结果;
@FXML
公共标签lblResult;
公共无效显示(字符串标题、字符串消息)引发IOException{
txtResult=新文本();
lblResult=新标签();
阶段=新阶段();
阶段.初始模态(模态.应用\模态);
父根=fxmloader.load(getClass().getResource(“/Alertbox.fxml”);
lblResult.setText(“消息”);
舞台。片名(片名);
舞台场景(新场景(根));
stage.show();
}
它有两个参数。我尝试添加@FXML或删除@FXML,但两者都不起作用。我还尝试初始化标签和文本


txtResult=新文本();
lblResult=新标签();

我调试了代码。消息是一个字符串,包含正确的消息。

当您调用
FXMLLoader时,不应创建控制器。加载
,因为
load
将创建控制器。您也不应该使用load的静态版本。您的代码应该看起来像:

public static ControllerClass display(String title, String message) throws IOException {
    Stage stage = new Stage();
    stage.initModality(Modality.APPLICATION_MODAL);
    FXMLLoader loader = new FXMLLoader();
    Parent root= loader.load(getClass().getResource("/Alertbox.fxml"));
    ControllerClass controller = loader.getController();    
    controller.lblResult.setText("message");
    stage.setTitle(title);
    stage.setScene(new Scene(root));
    stage.show();
    return controller;
}

这可能仍然不完全正确,但它应该为您指明正确的方向


注意,ControllerClass是控制器的类名。

您不需要创建新文本或标签,它们由@FXML注释和相应的FXML文件注入。如果我删除
Alertbox.FXML
中的“创建新文本或标签”,它仍然不起作用?还有,这个类是它的控制器吗?那么,您在哪里设置文本以及结果是什么错误消息?可能是@tevemadar的重复项是的,该类是它的控制器。该类有一个名为“display”的方法。该类没有构造函数。嗯,看来我没有出错。我刚收到警告,但那是其他原因你为什么要返回控制器?我想转到一个新屏幕,向新屏幕发送一个参数。就是这样:你需要在某处存储对它的引用,只是一个不需要的习惯。啊,好吧!我修好了