当前位置: 首页 > 面试题库 >

从JavaFX开始:无法将javafx.scene.control.Label字段application.SceneController.myLabel设置为javafx.scene.text.Text

翟誉
2023-03-14
问题内容

我从JavaFX开始。

当我执行程序时,发生错误,在尝试执行此操作之前,它工作正常且按钮单击正常,但这是在我打算使按钮单击更改文本之前。

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

<AnchorPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.SceneController">
   <children>
      <AnchorPane layoutX="-100.0" layoutY="-224.0" prefHeight="572.0" prefWidth="430.0">
         <children>
            <Button layoutX="205.0" layoutY="253.0" mnemonicParsing="false" onAction="#handleActionButton1" text="Do you want swag?" />
            <Text fx:id="myLabel" layoutX="280.0" layoutY="339.0" strokeType="OUTSIDE" strokeWidth="0.0" text="My text will change!" />
         </children>
      </AnchorPane>
   </children>
</AnchorPane>

那就是FXML,在行上,您可以看到文本为“我的文本将改变!”。在Eclipse的FXML文本编辑器上,它给了我这个错误:“您不能将’Text’分配给控制器字段’Label’。

这是我的SceneController类:

package application;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Label;

public class SceneController{

    @FXML
    private Label myLabel;

    @FXML
    public void handleActionButton1(ActionEvent event){
        System.out.println("Hello World!");
        myLabel.setText("Hello World!");
    }

}

如前所述,在获得标签之前,它将在控制台上成功输出“ Hello World”,但是现在可以了,但是不执行我的Java应用程序,这给了我一个很长的错误:

javafx.fxml.LoadException: 
/C:/Users/Neil/development/JavaFX/bin/application/appfxml.fxml:14

    at javafx.fxml.FXMLLoader.constructLoadException(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.load(Unknown Source)
    at application.Main.start(Main.java:15)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$153(Unknown Source)
    at com.sun.javafx.application.LauncherImpl$$Lambda$51/1299755900.run(Unknown Source)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$166(Unknown Source)
    at com.sun.javafx.application.PlatformImpl$$Lambda$45/1051754451.run(Unknown Source)
    at com.sun.javafx.application.PlatformImpl.lambda$null$164(Unknown Source)
    at com.sun.javafx.application.PlatformImpl$$Lambda$47/1698159280.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$165(Unknown Source)
    at com.sun.javafx.application.PlatformImpl$$Lambda$46/1775282465.run(Unknown Source)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$null$141(Unknown Source)
    at com.sun.glass.ui.win.WinApplication$$Lambda$37/1109371569.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalArgumentException: Can not set javafx.scene.control.Label field application.SceneController.myLabel to javafx.scene.text.Text
    at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
    at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
    at sun.reflect.UnsafeObjectFieldAccessorImpl.set(Unknown Source)
    at java.lang.reflect.Field.set(Unknown Source)
    at javafx.fxml.FXMLLoader.injectFields(Unknown Source)

问题答案:

在您的内部FXML,您定义了一个Text,如在Controller中一样,您尝试将其用作Label

stackTrace(错误)在其声音上方大喊:

无法将 javafx.scene.control.Label 字段application.SceneController.myLabel 设置为
javafx.scene.text.Text

在您的控制器中,您需要将myLabel定义更改为

@FXML
private Text myLabel;


 类似资料:
  • 问题内容: 用户声明: 模式声明: UserPatternDeclaration: 请求数据库: 我得到以下异常: 请帮助解决此问题。 错误消息看起来非常非常奇怪。 我已阅读相关主题的点击,但未找到答案。 ps hibernate日志(异常之前): 在浏览器中,我看到以下消息: 问题答案: 如果将HQL查询更改为会怎样? 我认为Hibernate混淆了对象和ID字段。

  • 我有一个项目班: 然后是合作者: 在我的DAO中,我想执行以下查询: null 如有任何帮助,我将不胜感激。谢谢。

  • 问题内容: 我试图从我的xml中将按钮的文本设置为“ <<<”,但出现“错误:(20)解析XML时出错:格式不正确(无效令牌)” 因此,我跳到我的strings.xml并在其中输入它,这显然行不通。 有没有解决方法? 问题答案: 这些是html实体,也可以在android studio中使用:

  • 问题内容: 我有一个用netbeans开发的应用程序,我想在显示面板时将焦点设置为一定。我已经阅读了许多文章,并尝试了各种方法,但没有奏效。主要问题之一是在哪里放置所需的代码,我认为在我的情况下是 有一些指示使用Window Listener的帖子,但是随着netbeans生成GUI,我无法看到如何实现接口,因为我无法编辑创建jPANEL等的代码。整个过程非常令人沮丧,我真的没有相信这应该很困难。

  • 怎么画线段? 上一讲我们已经得到了咱们的画布和画笔,在发挥艺术家之魂前,还是要像小孩牙牙学语一样,我们也得从画一条线段开始。因为画线段是最简单的,最基础的。但是别小看了它。下面是我从度娘那里找到的一个由线条组成的图像。 是不是很有魔性? 言归正传。怎么画线条?和现实中画画差不多: 移动画笔,使画笔移动至绘画的开始处 确定第一笔的停止点 规划好之后,选择画笔(包括画笔的粗细和颜色等) 确定绘制 因为

  • 我在我的项目中使用jsPlumb库,我有一个函数,如果endpoint图像连接,则会更改它们。当页面加载并且一切正常时,我调用它,但是当我在连接事件中调用它时,什么都不会发生。这是我的代码: 如果断开连接,我还尝试将endpoint图像更改回第一个外观,但在这种情况下,只有源endpoint更改,目标保持不变: 我错过了什么,或者我如何解决这个问题? 编辑:这里是JSFIDLE: https://