当前位置: 首页 > 知识库问答 >
问题:

onaction=“#ClickedClickMe”在JavaFX FXML中不起作用

谭献
2023-03-14

早上好!我刚刚开始学习Java FX和Java FX FXML。我使用Scene Builder来构建GUI,Netbeans来编写剩下的Java FX程序

我面临的问题是在FXML文件中。Netbeans编辑器在.fxml文件中为onAction事件显示以下代码的错误。

如果我使用Netbeans创建一个示例项目,它将使用AnchorPane,并且一切似乎都很好。但是,如果我删除AnchorPane并添加任何其他窗格和按钮,onAction事件将不起作用!

我是这门语言的初学者,因此任何帮助/指导都是非常感谢的!

注意:我做了将近半天的功课,尽我所能浏览了StackOverflow上所有可用的解决方案。

<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.RowConstraints?>
<?import javafx.event.ActionEvent?>

<GridPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.111">
  <columnConstraints>
    <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
    <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
  </columnConstraints>
  <rowConstraints>
    <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
    <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
    <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
  </rowConstraints>
   <children>
      <Button mnemonicParsing="false" onAction="#ClickedClickMe" text="Click Me!" GridPane.columnIndex="1" GridPane.rowIndex="1" />
      <Label fx:id="label" GridPane.columnIndex="1" GridPane.rowIndex="2" />
   </children>
</GridPane>
package sample1;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Sample1 extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));

        Scene scene = new Scene(root);

        stage.setScene(scene);
        stage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }

}

fxmlDocumentController.java

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package sample1;

import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;

public class FXMLDocumentController implements Initializable {

    @FXML
    private Label label;

    @FXML
    private void ClickedClickMe(ActionEvent event) {
        System.out.println("You clicked me!");
        label.setText("Clicked Try me!!");
    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }    

}

共有1个答案

楚浩然
2023-03-14

在fxml文件中设置控制器

<GridPane fx:controller="sample1.FXMLDocumentController" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.111">
 类似资料:
  • 早上好!我刚刚开始学习Java FX和Java FX FXML。我使用Scene Builder构建GUI,使用Netbeans编写剩余的Java FX程序。 我面临的问题是在FXML文件中。Netbeans编辑器在onAction事件的.fxml文件中的以下代码中显示错误。 如果我使用Netbeans创建一个示例项目,它使用AnchorPane,似乎一切都很好。但是,如果我删除AnchorPan

  • 我有一些 在量角器中,我们搜索并找到元素,检查文本是否符合我们的期望,然后对该元素调用。测试在Chrome中运行良好,但在IE中就好像没有点击发生一样。破坏了测试。 IE 11是否支持点击

  • 问题内容: 我注意到less.js在firefox中工作,但在Chrome中不工作,或者是因为我出错了吗? 即使我尝试在Chrome中仍然无法使用,我在某个地方犯了错误吗? 问题答案: 通过您提供的链接: 如果您使用的是Chrome,Less.js浏览器脚本当前将无法使用,并且由于已知的Chrome问题,网页的路径以“file:///”开头。

  • 问题内容: 不仅如此,其他代码也有相同的问题。只是不能使用ImageView。 环境:macOS,IntelliJ 造成原因:java.lang.IllegalArgumentException:无效的URL:无效的URL或找不到资源 问题答案: 该图像构造函数接受一个url作为参数。如果您未在其中添加协议,则它将假定该项目来自类路径。显然,不会出现在您的类路径中。 要从文件而不是类路径中读取,请

  • 问题内容: 当我迅速运行此代码时,我不知道为什么应用程序会在“ alertView.show()”部分显示一个断点而终止,请有人帮帮我。 问题答案: 从Xcode 6.0 UIAlertView类: 不推荐使用UIAlertView。改用UIAlertController和UIAlertControllerStyleAlert的preferredStyle。 在Swift(iOS 8和OS X 1

  • 问题内容: 我已经动态创建了一个复选框。我曾经在单击复选框时调用过一个函数,该函数在Google Chrome和Firefox中有效,但 在Internet Explorer 8中不起作用 。这是我的代码: 是我的事件处理程序。 问题答案: 尝试: 更新: 对于IE9之前的InternetExplorer版本,应使用attachEvent方法将指定的侦听器注册到调用它的EventTarget上,对