我有一个带有Scene-Builder的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");
}
}
现在,我想向按钮添加动作事件。我怎么做?我找不到包含FXML文件的东西。
答案 0 :(得分:0)
在Scene Builder中“代码”下有一个onAction字段。您必须将方法的名称放在控制器类中。或将以下代码添加到FXML文件中的按钮属性中:
onAction="#method"
答案 1 :(得分:0)
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
的字段。