gpt4 book ai didi

单击按钮时的 Java FXML 调用方法

转载 作者:行者123 更新时间:2023-11-29 08:33:12 24 4
gpt4 key购买 nike

我正在使用 SceneBuilder 在 JavaFX 中创建一个基本的游戏启动器。由于 SceneBuilder 在 FXML 中工作,因此我的启动器布局是在 FXML 中。我的主类中有一个方法,我想在单击按钮时调用它。我读到你可以使用

#methodName

在按钮的

onAction

属性,但这不起作用。

我的主要 Java 类:

@FXML
private void launchGame(ActionEvent e) {
System.out.println("Launching...");
}

@Override
public void start(Stage primaryStage) throws IOException {
Parent root = FXMLLoader.load(Main.class.getResource("launcher.fxml"));
Scene scene = new Scene(root);
primaryStage.setScene(scene);

primaryStage.setTitle("First Week Login");
primaryStage.setResizable(false);
primaryStage.sizeToScene();

primaryStage.show();
}

我的 FXML 文件:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.text.Text?>
<?import javafx.scene.web.WebView?>


<AnchorPane xmlns:fx="http://javafx.com/fxml/1"
xmlns="http://javafx.com/javafx/8.0.102">
<children>
<BorderPane prefHeight="493.0" prefWidth="664.0" styleClass="background"
stylesheets="@launcher.css">
<bottom>
<HBox alignment="CENTER" prefHeight="100.0" prefWidth="200.0"
BorderPane.alignment="CENTER">
<children>
<Button alignment="CENTER" mnemonicParsing="false"
text="Launch Game" onAction="#launchGame" />
</children>
</HBox>
</bottom>
<top>
<HBox alignment="CENTER" prefHeight="100.0" prefWidth="200.0"
BorderPane.alignment="CENTER">
<children>
<Text strokeType="OUTSIDE" strokeWidth="0.0"
styleClass="title" text="First Week" />
</children>
</HBox>
</top>
<center>
<WebView prefHeight="200.0" prefWidth="200.0"
BorderPane.alignment="CENTER" />
</center>
</BorderPane>
</children>
</AnchorPane>

最佳答案

您需要创建一个单独的 Controller 类并在顶部 AnchorPane 标记中使用 fx:controller="packageName.Classname"

指定它

像这样:

<AnchorPane xmlns:fx="http://javafx.com/fxml/1"
xmlns="http://javafx.com/javafx/8.0.102"
fx:controller="com.packageName.Controller">

被调用的方法应该在指定的 Controller 类中。

com.packageName 只是一个示例,您应该使用放置 Controller 类的包的名称,如果它不在任何包中,则不使用包名称。

关于单击按钮时的 Java FXML 调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46225554/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com