javafx从单独的类控制ui,不能从调用类添加节点

6pp0gazn  于 2021-07-08  发布在  Java
关注(0)|答案(0)|浏览(243)

我正在用javafx做一个简单的象棋游戏。从我的起始类开始,我成功地使用另一个类“uibuilder”来修改“stage primarystage”。我的uibuilder方法创建一个场景,添加一个gridpane,并用节点(imageview图片,但这应该是任意的)填充gridpane。
这是我的“uibuilder”构造函数的代码,100%用于创建阶段、显示节点等。
我正在尝试向uibuilder类添加一个方法,我可以从我的起始类启动它。我只想更改静态gridpane rootgrid的特定节点。e、 g如果rootgrid是一个8x8的图像网格,例如chess,我想把节点7,7改成一个按钮来代替图像。我知道使用静态节点可能不是最佳实践,但我正在尝试掌握基本gui创建的诀窍,然后再百分之百地担心这些小细节。考虑到节点是静态的,我特别困惑。任何关于跨类使用javafx的一般性建议都会很有帮助。我已经检查了8页的stackoverflow,还没有遇到这个问题。谢谢你的耐心。
我尝试将静态gridpane rootgrid返回到主类,然后使用gridpane root=uibuilder.getgrid()root.add(arbitrarybutton,7,7);
我还尝试简单地使用uibuilder类中的方法来创建按钮并将其添加到静态gridpane rootgrid。为此,我尝试使用uibuilder中的getter传递场景和gridpane,我想也许我可以将它们传递回uibuilder,然后添加一个按钮。

public static void buttonTest(Scene testScene, GridPane passGrid) {

    Button testButton = new Button("Test");
    passGrid.add(testButton, 8, 8);

}

    Class variables
public static Stage cosmos;
public static GridPane rootGrid;
public static Scene rootScene;
public static String testString;
public static Button returnButton;

    UIBuilder(Stage mainStage) {
    GridPane rootGrid = new GridPane();
    Scene scene = new Scene(rootGrid,1000,1600);
    rootScene = scene;

    mainStage.setScene(scene);
    mainStage.show();
    stageTestSize(mainStage, rootGrid);
    rootGrid.setVgap(15);
    rootGrid.setHgap(15);

    randomUnits(rootGrid);
}

在我的start方法下,下面的构造函数引用了上面的代码,并且工作得非常好。

UIBuilder uiMaster = new UIBuilder(primaryStage);
        Scene exampleScene = UIBuilder.getScene();
        GridPane exampleGrid = uiMaster.getGrid();

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题