gpt4 book ai didi

java - FXML JAVAFX 中的 ActionHandler 错误

转载 作者:行者123 更新时间:2023-11-30 08:09:04 25 4
gpt4 key购买 nike

我使用 javafx 和 scenebuilder 2.0 在 netbeans 中制作了一个基本的登录屏幕!通过复制 YouTube 教程。

<Button id="btnLogin" layoutX="146.0" layoutY="243.0" mnemonicParsing="false" onAction="#initialize" prefHeight="59.0" prefWidth="76.0" text="Login" />

如上所示,netbeans 在“#initialize”下划线并给出以下错误“Handler 方法不可访问。公开,或使用 @FXML 进行注释”

程序不想启动,甚至不想向我展示我的舞台。

登录 Controller :

   @FXML private void initialize (ActionEvent event)
{
System.out.println("test");
}

如果我只是删除代码“onAction="#initialize”,我的程序就会运行并显示一个界面,但我的登录按钮不起作用(显然)

附注公开是行不通的

任何建议将不胜感激,非常感谢

代码:

主要:

public class Login extends Application
{

@Override
public void start(Stage stage) throws Exception
{
Parent root = FXMLLoader.load(getClass().getResource("/fxml/Login.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.setTitle("Login");
stage.show();
}

Controller :

public class LoginController implements Initializable {

@FXML
private Label lblmessage;

@FXML
private TextField txtUsername;

@FXML
private Button btnLogin;

@FXML
private PasswordField txtPassword;

@FXML private void handlebutton()
{
System.out.println("test");
}

/**
* Initializes the controller class.
* @param url
* @param rb
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}



}

最佳答案

我猜方法名称是问题所在。@FMXL protected voidinitialize() 方法可用作启动时的附加回调。
您可以使用 initialize 方法,例如动态填充您的 UI。

所以:
尝试重命名代码和 fxml 文件中的方法。

<小时/>

如给定here :

An instance of the FXMLLoader class simply looks for the initialize() method on the controller and calls it, if available. Note that, similar to other FXML callback methods such as event handlers, this method must be annotated with the @FXML annotation if it is not public.

<小时/>

我刚刚重建了你的代码。我还将这个主要方法添加到登录中:

public static void main(String[] args){
launch(args);
}

这是 Login.fxml

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

<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>


<VBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="LoginController">
<children>
<Label fx:id="lblmessage" text="Label" />
<TextField fx:id="txtUsername" />
<Button fx:id="btnLogin" mnemonicParsing="false" onAction="#handlebutton" text="Button" />
<PasswordField fx:id="txtPassword" />
</children>
</VBox>

通过此设置,一切都会按预期进行。
舞台已加载,单击按钮时调用handlebutton方法,启动时调用initialize方法。
目前该错误似乎无法重现。

关于java - FXML JAVAFX 中的 ActionHandler 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30672793/

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