javafx - 如何在 java fx 场景构建器中添加事件处理
问题描述
我是 java 新手,我知道这是一个非常基本的问题,但我不断收到这些运行时错误,我创建了一个方法并将该方法添加到场景构建器的事件处理部分,但它不起作用,请看看在我的代码中,看看有什么问题。(已编辑)
import javafx.application.Application;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
import sun.applet.Main;
import java.io.IOException;
public class registration extends Application {
// Button button;
@Override
public void start(Stage primaryStage)throws Exception{
primaryStage.setTitle("Event Handling");
FXMLLoader loader = new
FXMLLoader(registration.class.getResource("jfs.fxml"));
Parent root = loader.load();
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
}
@FXML
private Button submit;
@FXML
private TextField text;
@FXML
private void initialize() {
// Handle Button event.
submit.setOnAction((event) -> {
text.appendText("somthn");
});
public static void main(String[] args) {
launch(args);
}
}
fxml 部分-我已将方法-初始化添加到按钮 onAction 中,但是当我运行它时该功能不起作用。
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.Cursor?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.CheckBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.PasswordField?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.text.Font?>
<AnchorPane nodeOrientation="LEFT_TO_RIGHT" prefHeight="530.0" prefWidth="832.0" style="-fx-background-color: pink;"
xmlns="http://javafx.com/javafx/8.0.121" xmlns:fx="http://javafx.com/fxml/1" fx:controller="registration">
<children>
<VBox layoutX="347.0" layoutY="71.0" prefHeight="359.0" prefWidth="433.0" style="-fx-background-color: AliceBlue;">
<children>
<TextField id="name" alignment="TOP_CENTER" maxWidth="-Infinity" prefWidth="200.0" promptText="Username"
style="-fx-background-color: white; -fx-background-radius: 0px;" VBox.vgrow="SOMETIMES">
<cursor>
<Cursor fx:constant="DEFAULT" />
</cursor>
<opaqueInsets>
<Insets />
</opaqueInsets>
<VBox.margin>
<Insets left="29.0" right="10.0" top="30.0" />
</VBox.margin>
<padding>
<Insets top="10.0" />
</padding>
</TextField>
<TextField id="e-mail" alignment="TOP_CENTER" maxWidth="-Infinity" prefWidth="200.0" promptText="e-mail" VBox.vgrow="SOMETIMES">
<VBox.margin>
<Insets left="29.0" right="10.0" top="30.0" />
</VBox.margin>
<padding>
<Insets top="10.0" />
</padding>
</TextField>
<PasswordField id="pwd" alignment="TOP_CENTER" maxWidth="-Infinity" prefWidth="200.0" promptText="new password">
<VBox.margin>
<Insets left="29.0" right="10.0" top="30.0" />
</VBox.margin>
</PasswordField>
<PasswordField id="pwd" alignment="TOP_CENTER" layoutX="39.0" layoutY="164.0" maxWidth="-Infinity" prefWidth="200.0" promptText="confirm password">
<VBox.margin>
<Insets left="29.0" right="10.0" top="30.0" />
</VBox.margin>
</PasswordField>
<Button mnemonicParsing="false" prefHeight="38.0" prefWidth="75.0" text="Register">
<VBox.margin>
<Insets left="160.0" top="70.0" />
</VBox.margin>
</Button>
</children>
<padding>
<Insets right="10.0" top="10.0" />
</padding></VBox>
<Label layoutX="353.0" layoutY="34.0" text="Please fill in the following details to register">
<font>
<Font name="System Bold" size="18.0" />
</font>
</Label>
<VBox id="labelo" layoutX="14.0" layoutY="72.0" prefHeight="359.0" prefWidth="320.0" style="-fx-background-color: AliceBlue;">
<children>
<Label text="Welcome to JFS ">
<font>
<Font name="System Bold Italic" size="15.0" />
</font>
<VBox.margin>
<Insets left="50.0" top="30.0" />
</VBox.margin>
</Label>
<Label />
<TextField id="mail" alignment="TOP_CENTER" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="200.0" promptText="E-mail">
<VBox.margin>
<Insets left="30.0" top="30.0" />
</VBox.margin>
</TextField>
<Label text="Your query:">
<VBox.margin>
<Insets left="30.0" top="20.0" />
</VBox.margin>
</Label>
<TextArea id="query" maxWidth="-Infinity" minWidth="-Infinity" prefHeight="91.0" prefWidth="213.0">
<padding>
<Insets top="5.0" />
</padding>
<VBox.margin>
<Insets left="30.0" top="10.0" />
</VBox.margin>
</TextArea>
<CheckBox id="check" mnemonicParsing="false" text="Receive newsletters">
<VBox.margin>
<Insets left="120.0" top="20.0" />
</VBox.margin>
</CheckBox>
<Label id="lab" prefHeight="17.0" prefWidth="104.0">
<VBox.margin>
<Insets left="200.0" right="40.0" top="90.0" />
</VBox.margin></Label>
<TextField id="text" fx:id="text" visible="false" />
<Button id="submit" fx:id="submit" mnemonicParsing="false" onAction="#initialize" text="Submit">
<VBox.margin>
<Insets left="100.0" top="20.0" />
</VBox.margin>
</Button>
</children>
</VBox>
</children>
<cursor>
<Cursor fx:constant="MOVE" />
</cursor>
</AnchorPane>
解决方案
推荐阅读
- azure - 如何创建一个体系结构,让多个资源组在 Azure 上共享一个数据库服务器?
- java - Java中的HTTP Get Response解析并存储在字符串中
- postgresql - 将数据导入 Prisma / PostgreSQL 服务的最有效方法?
- ios - 快速滚动 UIPageViewController 阻止 viewcontroller 更新
- tensorflow - 如何使用 TensorFlow 的 `tf.data` API 多次获取相同的数据批次
- c# - 如何在 C# XAML WPF 中处理数据修改
- python - on_voice_state_update() 接受 2 个位置参数,但给出了 3 个
- python - 如何错开异步 API 调用以防止使用 grequests 库进行最大重试?
- web-services - Liferay 7 插件 SOAP 服务定位器
- ios - 如何使编程 UITableView 文本的一部分可点击?