为了账号安全,请及时绑定邮箱和手机立即绑定

JavaFX无法设置Label或Text的文本

JavaFX无法设置Label或Text的文本

qq_花开花谢_0 2024-01-28 16:08:57
我不知道为什么这不起作用。我想设置标签或文本的文本。(如果有效的话,哪个都没关系)。标签保持不变。当我使用 Text 时,应用程序崩溃了......@FXML    public Text txtMessage;    @FXML    public Text txtTitle;    @FXML    public Text txtResult;    @FXML    public Label lblResult;    public void display(String title, String message) throws IOException {        txtResult = new Text();        lblResult = new Label();        Stage stage = new Stage();        stage.initModality(Modality.APPLICATION_MODAL);        Parent root= FXMLLoader.load(getClass().getResource("/Alertbox.fxml"));        lblResult.setText("message");        stage.setTitle(title);        stage.setScene(new Scene(root));        stage.show();    }它有 2 个参数。我尝试添加@FXML,或删除@FXML,但两者都不起作用。我还尝试初始化标签和文本。 txtResult = new Text(); lblResult = new Label();我调试了代码。message 是一个字符串,包含正确的消息。
查看完整描述

1 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

当您调用时不应创建控制器,FXMLLoader.load因为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 是控制器的类名。


查看完整回答
反对 回复 2024-01-28
  • 1 回答
  • 0 关注
  • 30 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信