- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 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/
如何让操作处理程序忽略箭头键?目前,当我尝试使用箭头键导航组合框时,组合框向下/向上移动一次,更改选择,然后触发操作处理程序将焦点移动到按钮。我希望能够使用箭头键导航组合框,并在准备好转到下一个组件时
我使用 Vaadin 6.8.8。我正在尝试将操作处理程序添加到面板(以获取上下文菜单)。该面板占据了窗口的所有位置,但当我单击鼠标右键时,我导致了浏览器上下文菜单。 public class MyP
我正在尝试通过按如下所示插入this.send()来在Ember中检测ActionHandler#send: Ember.ActionHandler.reopen({ send() { conso
我的问题是,当尝试执行我的代码时,我的actionListener 上不断收到NullPointerException。这是我的登录 View 。经过一些测试后,LoginView 类中出现异常。 p
我使用 javafx 和 scenebuilder 2.0 在 netbeans 中制作了一个基本的登录屏幕!通过复制 YouTube 教程。 如上所示,netbeans 在“#initialize
这是我的代码: seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){ public voi
我是一名优秀的程序员,十分优秀!