【问题标题】:How do I call an object an object from a .fxml file in my controller file?如何从控制器文件中的 .fxml 文件中调用对象?
【发布时间】:2015-10-02 16:49:42
【问题描述】:

我正在制作一个秒表程序,我想设置一张照片进行旋转。问题是,我不知道如何调用控制器文件中的照片。它只是告诉我它找不到符号。

这是我想从我的 .fxml 文件中调用的照片

 <ImageView fx:id="hand">
     <image>
        <Image url="@hand.png"/>
     </image>
  </ImageView>

这是我在控制器文件中调用它的地方,但出现错误。

@FXML
 private void updateStopwatch(){
    elapsedTime++;
    Integer rotation = elapsedTime * 6;
    hand.setRotate(rotation);      


 }

提前感谢您的帮助。我得到的错误如下:

hand.setRotate(rotation); 
^^^^
Cannot find symbol hand

【问题讨论】:

  • 必须是fx:id="hand"
  • 你的 fxml 文件也需要引用你的控制器类。 fx:controller="pathToController"
  • @user2651804 在哪个文件中?我只是尝试在两者中都进行更改,但没有成功
  • 它有那行@user2651804
  • 我不明白?它有什么线?我会发布一个答案。

标签: java image javafx javafx-8 fxml


【解决方案1】:

当您为要注入控制器的 fxml 对象提供正确的属性 fx:id="hand" 后,您需要将该 id 声明为控制器类中的属性。

public class MyController {
    @FXML private ImageView hand;

    private void updateStopwatch(){
        elapsedTime++;
        Integer rotation = elapsedTime * 6;
        hand.setRotate(rotation);      
    }
}

在您的 fxml 文件中,您必须通过在根元素中添加此属性来引用控制器(MyController):

fx:controller="some.package.MyController"

您的 fxml 文件可能只引用一个控制器。

【讨论】:

  • 类名是什么意思?
  • 那只手应该是什么对象。
  • 感谢您的帮助。如果你能回答,我还有一个问题。但是虽然是同一个程序,但它与这个主题不同。问题是....如何从我的主 .java 文件中的控制器文件调用函数?我可以用我的代码更新我的主要问题
  • 您不应将当前问题更改为新问题。它违背了 SO 论坛的目的。由于您的问题非常广泛,请在其他地方寻找答案(在您发布新问题之前)。
  • 此外,没有“正确”的方法可以做到这一点,因此您不是在寻找“简单”的修复方法。我会说最好的解决方案是根本不这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-30
  • 1970-01-01
  • 1970-01-01
  • 2017-06-03
  • 2013-05-28
相关资源
最近更新 更多