java - javafx 中按钮的操作事件不起作用

标签 java button javafx event-handling

我正在 javafx 中制作一个应用程序,它使用库存子系统来允许用户添加到数据库或查找产品。我遇到的问题是当我单击下一个菜单时,例如,如果我选择查找项目,然后返回主菜单。 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();
});

进入主菜单方法而不是启动方法。

关于java - javafx 中按钮的操作事件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58919981/

相关文章:

java - 如何将ArrayList打印成行和列?

java - 多个项目可以有相同的上下文根吗?

c# - 在文本框中按回车键执行按钮命令

java - 填充 ComboBox 后 FXML 场景生成器无效属性

java - 如何从媒体对象获取元数据

java - Java IDE 易于导入吗?

java - 继续获取 "null has 00null"

Xamarin 触发器按钮未在 FreshMvvm/SwipeView 上下文中触发

swift - 如何知道按钮何时被按下和取消 Button pressing

java - TableView -fx-text-fill 行