当前位置: 首页 > 知识库问答 >
问题:

在javafx[duplicate]中向不同场景传递变量

冯枫
2023-03-14

我正在做java fx,我陷入了将变量传递到不同的FXML场景中。因此在第一个场景控制器上,LoginController与login.fxml相关联

public class LoginController {

    @FXML private TextField username;
    @FXML private PasswordField password;
    @FXML private Button loginButton;
    @FXML private Label labelStatus;

    @FXML private void handleLoginButton() throws InterruptedException {

        try {
            FXMLLoader mainLoad = new FXMLLoader(getClass().getResource("../View/mainscreen.fxml"));
            Parent mainRoot = (Parent) mainLoad.load();
            Stage stage = new Stage();
            stage.setScene(new Scene(mainRoot));
            stage.show();
        } catch (Exception e) {
            e.printStackTrace();
            return;
        }
    }
}

当新场景打开时,我需要根据包含用户输入的username变量设置标签。这意味着我们需要通过controoler将变量从login.fxml传递到mainscreen.fxml。我如何实现这一点?

共有1个答案

壤驷喜
2023-03-14

最简单的方法是通过设置器在mainscreencontroller中设置适当的字段。Yo可以通过fxmlloader#getcontroller()方法(https://docs.oracle.com/javase/8/javafx/api/javafx/fxml/fxmlloader.html#getcontroller--)获得负责此fxml的控制器。

其他方法取决于您的应用程序体系结构。应该有一个对象负责存储那种信息。

 类似资料:
  • 我尝试了几乎所有可用的解决方案,但似乎都不起作用我需要在两个Javafx场景之间传递,但当我单击以导航到下一个场景时,什么也没有发生。以下是我目前为止的代码:

  • 我试图在JavaFX中的场景之间传递一个字符串,我已经遵循了一些答案,但似乎它们不起作用,因为字符串在新场景中是空的。 另一个: 正如你所看到的,我尝试使用一个控制程序,并使用一个集合来填充字符串,问题是当我打开新场景时,他的控制程序重置,字符串不再存在,知道为什么或如何解决这个问题吗?

  • 问题内容: 我有一个使用javafx Scene来渲染某些东西的应用程序,并且我想将该渲染结果放入我在Javafx中创建的某些GUI中。我该怎么做? 基本上,有一些容器可以放入场景,然后将其放入GUI。 抱歉,如果是新手问题,我是JavaFX的新手 问题答案: 该场景只有一个顶级父节点作为根。您可以获取它并放入另一个场景。

  • 问题内容: 尝试使用PATCH方法将POST方案的响应的引用传递给另一个方案,并更改其中一个属性并得到错误。调试源代码后,我发现,当针对一种情况调用Scripts.assign时,变量作用域不会传递给另一种情况。 空手道版本:0.5.0 Java版本:1.8 测试的全部功能: 问题答案: 这是设计使然- 如果您需要变量在功能中所有s的范围内,请将其移至。如果您只想将此变量初始化一次,请查看关键字。

  • 我创建了一个游戏,我想给它添加一个开始屏幕,我使用FXML添加了它,还添加了两个按钮(开始和退出)。 按下开始按钮后,我希望游戏加载场景并切换到游戏开始。我对如何做有一个粗略的想法,但我有点挣扎,因为我的SampleController类不知道如何启动游戏等,因为所有代码(以及加载初始开始菜单的代码)都在我的主类中,所以我尝试了这样的事情: 我尝试使用一个函数来切换场景,但它不起作用,也试图使用获