我有一个带有场景构建器的 FXML 文件构建,其中包含所需的 fx:ids 和以下控制器:
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");
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想向按钮添加动作事件。我怎么做?我真的找不到涉及 FXML 文件的东西。
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!");
}
}
Run Code Online (Sandbox Code Playgroud)
然后 FXML 文件可能类似于:
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!");
}
}
Run Code Online (Sandbox Code Playgroud)
您可以通过单击所需节点并转到右侧的“代码”面板,使用 Scene Builder 进行配置。将有各种onXXX属性的字段以及fx:id.