【问题标题】:JavaFX (with FXML) Adding Action events for buttonsJavaFX (with FXML) 为按钮添加动作事件
【发布时间】:2019-01-04 09:15:40
【问题描述】:

我有一个带有所需 fx:ids 和以下控制器的 Scene-Builder 构建的 FXML 文件:

public class LaunchLogin extends Application{

public static void main (String [] args) {
    launch(args);
}

@Override
public void start (Stage primaryStage) throws Exception {
    //ResourceLoader rl = ResourceLoader.getInstance();
    FXMLLoader loader = new FXMLLoader();
    loader.setLocation(getClass().getResource("/gfx/gui/LoginScreenUI.fxml"));
    Parent root = loader.load();
    Scene scene = new Scene(root);
    scene.getStylesheets().add("/gfx/gui/cogfitStyle.css");
    primaryStage.setScene(scene);
    primaryStage.setTitle ("CogFit");
    primaryStage.show();
}
@FXML
Button btn_newUser;


@FXML
Button btn_changePW;

@FXML
Button btn_send;

@FXML
private void test(ActionEvent event)
{
    System.out.println("success");
}
}

现在我想向按钮添加动作事件。我怎么做?我真的找不到涉及 FXML 文件的东西。

【问题讨论】:

    标签: javafx


    【解决方案1】:

    Introduction to FXML 描述了通过 FXML 添加事件处理程序的语法。它使用# 符号和适当的onXXX 属性。例如,如果您有以下控制器:

    package example;
    
    import javafx.event.ActionEvent;  
    import javafx.fxml.FXML;
    
    public class Controller {
    
        @FXML
        private void printHelloWorld(ActionEvent event) {
            event.consume();
            System.out.println("Hello, World!");
        }
    
    }
    

    那么 FXML 文件可能类似于:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <?import javafx.scene.control.Button?>
    <?import javafx.scene.layout.StackPane?>
    
    <StackPane xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1"
               fx:controller="example.Controller" prefWidth="500" prefHeight="300">
    
        <Button text="Click me!" onAction="#printHelloWorld"/>
    
    </StackPane>
    

    您可以使用 Scene Builder 进行配置,方法是单击所需节点并转到右侧的“代码”面板。将有各种onXXX 属性的字段以及fx:id 的字段。

    【讨论】:

      【解决方案2】:

      在“代码”下的 Scene Builder 中有一个字段 onAction。您必须将方法的名称放在您的控制器类中。或者在 FXML 文件中的按钮属性中添加如下代码:

      onAction="#method"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-25
        • 1970-01-01
        • 2015-07-21
        • 1970-01-01
        • 1970-01-01
        • 2016-03-25
        • 2020-03-14
        • 1970-01-01
        相关资源
        最近更新 更多