gpt4 book ai didi

java - 如何使 FXML 生成的按钮起作用

转载 作者:行者123 更新时间:2023-12-01 11:38:41 26 4
gpt4 key购买 nike

我正在使用 JavaFX 为学校项目编写程序。我正在 SceneBuilder 8 中设计 UI,它正在为我生成 FXML。我的问题是,如何将按钮和 slider 等连接到我的 java 代码?它与 XCode 中的按钮编码类似吗?

这是我的 FXML 源代码(如果有帮助的话):

<?import javafx.scene.effect.*?>
<?import javafx.scene.text.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>

<SplitPane dividerPositions="0.3996655518394649" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="470.0" xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1">
<items>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="398.0" prefWidth="145.0">
<children>
<TableView layoutY="33.0" prefHeight="323.0" prefWidth="180.0" AnchorPane.bottomAnchor="42.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="33.0">
<columns>
<TableColumn prefWidth="77.0" text="Event" />
<TableColumn prefWidth="101.0" text="Suggested time" />
</columns>
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
</columnResizePolicy>
<effect>
<Blend />
</effect>
</TableView>
<Label layoutY="6.0" prefHeight="27.0" prefWidth="90.0" text="Event view">
<font>
<Font size="18.0" />
</font>
</Label>
<Button layoutY="368.0" mnemonicParsing="false" prefHeight="0.0" prefWidth="34.0" text="+">
<font>
<Font name="System Bold" size="14.0" />
</font>
</Button>
</children></AnchorPane>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="398.0" prefWidth="267.0">
<children>
<Label layoutY="7.0" prefHeight="27.0" prefWidth="90.0" text="Detail view">
<font>
<Font size="18.0" />
</font>
</Label>
<GridPane layoutX="14.0" layoutY="34.0" prefHeight="120.0" prefWidth="258.0">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="124.0" minWidth="10.0" prefWidth="87.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="176.0" minWidth="10.0" prefWidth="171.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints maxHeight="30.0" minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="75.0" minHeight="10.0" prefHeight="59.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="60.0" minHeight="10.0" prefHeight="31.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="25.0" minHeight="0.0" prefHeight="0.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<Label text="Name" />
<Label text="Details" GridPane.rowIndex="1" />
<Label text="Estimated time" GridPane.rowIndex="2" />
<TextField promptText="Enter name" GridPane.columnIndex="1" />
<TextField promptText="Enter estimated time" GridPane.columnIndex="1" GridPane.rowIndex="2" />
<TextArea prefHeight="200.0" prefWidth="200.0" promptText="Enter details" GridPane.columnIndex="1" GridPane.rowIndex="1" />
</children>
</GridPane>
<Button layoutX="219.0" layoutY="372.0" mnemonicParsing="false" text="Done" />
<Button layoutX="152.0" layoutY="372.0" mnemonicParsing="false" text="Cancel" />
</children></AnchorPane>
</items>
</SplitPane>

感谢您提供的任何帮助!

编辑:为了澄清,我有一个 FXML 文件、一个 Controller 类和一个构造函数类。我需要连接到我的 Controller 类。

最佳答案

定义 Controller 类后,您可以将 FXML 文件链接到它。在 SceneBuilder 中,展开左下角的“ Controller ”标题 Pane ,然后输入 Controller 类的完全限定名称。

要为按钮指定处理程序方法,请选择该按钮,然后展开标题为“代码”的 Pane (右侧面板的底部 Pane )。例如,您可以在“操作时”字段中添加操作处理程序的方法名称。

enter image description here

如果您在没有 SceneBuilder 的情况下执行此操作,则添加属性 fx:controller="..."到 FXML 的根元素,指定完全限定的类名。对于按钮,您可以添加 onAction="#methodName"<Button ... >元素,指定按下按钮时要执行的方法的名称。该方法应该采用 ActionEvent 类型的单个参数,或者没有参数。

关于java - 如何使 FXML 生成的按钮起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29735703/

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