我在javafx中制作了一个应用程序,它使我们成为库存子系统,以允许用户添加到数据库或查找产品。我遇到的问题是,当我单击下一个菜单时,例如,如果我选择lookupitem,然后返回主菜单。 setonaction方法停止工作。

private void mainMenu() {

    pane.setBottom(null);
    Label mainMenuTitle=new Label("Inventory Subsystem");

    VBox titleBox=new VBox(mainMenuTitle);

    pane.setTop(titleBox);

    lookUpItem=new Button("Look Up Item");
    enterItem=new Button("Enter Item");
    deleteItem=new Button("Delete Item");


    VBox mainMenuChoices=new VBox(20,lookUpItem,enterItem,deleteItem);
    mainMenuChoices.setAlignment(Pos.CENTER);
    pane.setCenter(mainMenuChoices);


上面是我的主菜单,从那里有按钮,让我选择下一个屏幕。

private void lookUpItemScreen() {

    GridPane gridpane=new GridPane();
    Button submit=new Button("Submit");
    Button back=new Button("Back");
    HBox submitbox=new HBox(5,submit,back);
    submitbox.setAlignment(Pos.CENTER);
    submitbox.setPadding(new Insets(0,0,10,0));

    Label Title=new Label("Look Up Item");
    VBox titleBox=new VBox(Title);

    Label idLabel=new Label("Id: ");
    Label productIdLabel=new Label("Product Id: ");
    Label orLabel=new Label("or");

    TextField id=new TextField();
    TextField productID=new TextField();

    gridpane.add(idLabel,0,1);
    gridpane.add(id,3,1);
    gridpane.add(orLabel,2,2);
    gridpane.add(productIdLabel,0,3);
    gridpane.add(productID,3,3);

    gridpane.setAlignment(Pos.CENTER);
    gridpane.setHgap(5);
    gridpane.setVgap(10);

    pane.setTop(titleBox);
    pane.setCenter(gridpane);
    pane.setBottom(submitbox);

    submit.setOnAction(event -> {
        //This is wher it looks up item in database and shows data
    });

    back.setOnAction(event -> {
        mainMenu();
    });


}


这些都在我的启动方法中,并且在lookUpItem.setOnAction(event-> {lookUpItemScreen()})时选择了lookupitemscreen;

public void start(Stage primaryStage) {

    mainMenu();

    lookUpItem.setOnAction(event ->
    {
        lookUpItemScreen();
    });

    enterItem.setOnAction(event -> {
        enterItemScreen();

    });

    deleteItem.setOnAction(event -> {
        deleteItemScreen();
    });

    Scene supplierInfoSubsys=new Scene(pane, 640,400);
    primaryStage.setScene(supplierInfoSubsys);
    primaryStage.show();

}

最佳答案

我想到了。我不得不说:

lookUpItem.setOnAction(event ->
{
    lookUpItemScreen();
});

enterItem.setOnAction(event -> {
    enterItemScreen();

});

deleteItem.setOnAction(event -> {
    deleteItemScreen();
});


进入mainmenu方法而不是start方法。

07-26 01:45