我在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方法。