Can';t从JavaFX操作标签

Can';t从JavaFX操作标签,java,user-interface,javafx,Java,User Interface,Javafx,我试图在用户每次进入该页面时更改JavaFX软件GUI标签的文本。为此,我必须能够更改该标签的值,例如将其解析为变量并执行这些操作 问题是,由于标签都是用FXML编写的,我不知道如何在Java上正确使用它。我试过: @FXML公共标签WordID 为了使标签(其ID为“WordID”)成为对象,我失败了。当我这样做的时候,程序就不会再进入那个框架了。我该怎么办 代码: FXML: 错误消息: Glass在-[GlassViewDelegate SendJavaMouseeEvent:]:src/

我试图在用户每次进入该页面时更改JavaFX软件GUI标签的文本。为此,我必须能够更改该标签的值,例如将其解析为变量并执行这些操作

问题是,由于标签都是用FXML编写的,我不知道如何在Java上正确使用它。我试过:

@FXML公共标签WordID

为了使标签(其ID为“WordID”)成为对象,我失败了。当我这样做的时候,程序就不会再进入那个框架了。我该怎么办

代码:

FXML:

错误消息:

Glass在-[GlassViewDelegate SendJavaMouseeEvent:]:src/com/sun/mat/ui/GlassViewDelegate.m:543处检测到未完成的Java异常 线程“JavaFX应用程序线程”java.lang.RuntimeException中的异常: ... com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:64) 位于com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217) 位于com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170) 位于com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38)com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseeEventNotification.run(GlassViewEventHandler.java:250) 位于com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:173) 位于java.security.AccessController.doPrivileged(本机方法) 在javafx.fxml.fxmloader$controllermethodventhandler.handle(fxmloader.java:1444) ... 40多 原因:java.lang.NullPointerException 在screensframework.Screen3Controller.mostrarPalavra(Screen3Controller.java:89) ... 50多


要以编程方式使用
标签
,只需在
控制器
文件中声明一个与
文件中声明的id相同的变量即可:

YourFXML.fxml

<AnchorPane xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="com.sample.Screen3Controller ">
    ...
    <Label fx:id="WordID" layoutX="393.0" layoutY="148.0" prefWidth="177.0" text="">
      <font>
        <Font name="Avenir Roman" size="40.0" />
      </font>
    </Label>
    ...
</AnchorPane>

WordID
palavraID
?WordID。我更改了它,使其在StackOverflow上更可读,但忘记在FXML上更改。不管怎样,我换了它后它还是不起作用。你想在标签上写什么?什么事件会引发这一切?我在做一个问题。每当有人进入程序的下一帧时,它必须切换问题(我想更改的标签)。触发这一点的事件是点击按钮后从一帧切换到另一帧。它仍然不起作用。当我这样做的时候,当我点击动作按钮时,下一帧根本不会打开。我的程序可能会发生什么情况?你到底在调用什么
frame
?不需要新场景,只需在当前场景中重新定义值即可。你能把按钮的听者添加到你的问题中吗?我正在调用一个场景。我将把按钮的侦听器添加到问题中。顺便说一句,如果你有一个教程可以帮助我解决这些JavaFX问题,我将永远感激。@user3088010我可以向你推荐一个很棒的教程,这是我自己遵循的,它引导我经历了一个类似于你的情况,第三天,我仍然无法解决这个问题!我发现这个错误只有在我有多个场景时才会出现,比如你给我看的视频中的场景。我就是这样做的,当我尝试更改某个操作(例如单击按钮)上标签的值时,控制台上会出现以下错误消息(我将其添加到顶部的问题中)。我要在明天之前完成这件事,我真的很绝望!帮助
<Label fx:id="WordID" layoutX="393.0" layoutY="148.0" prefWidth="177.0" text="">
  <font>
    <Font name="Avenir Roman" size="40.0" />
  </font>
</Label>
@FXML
private void goToScreen3(ActionEvent event){
   myController.setScreen(ScreensFramework.screen3ID);
   WordID.setText("LOl");
}
<AnchorPane xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="com.sample.Screen3Controller ">
    ...
    <Label fx:id="WordID" layoutX="393.0" layoutY="148.0" prefWidth="177.0" text="">
      <font>
        <Font name="Avenir Roman" size="40.0" />
      </font>
    </Label>
    ...
</AnchorPane>
import javafx.scene.control.Label;  //make sure you're importing the JavaFX Label

public class Screen3Controller implements Initializable, ControlledScreen {

    ScreensController myController;
    @FXML private Label WordID;

    ...

    WordID.setText("some text...");

    ...
}