有没有办法在Controller类以外的类中访问FXML变量?

时间:2013-06-26 11:42:39

标签: javafx-2 javafx fxml

我很好奇有没有办法在Controller类中调用@FXML变量,而在另一个类中调用@FXML变量。实际上,我正在处理SVGPath节点并尝试实现各种类型的图形。但是,我不想只在控制器类中编写整个代码。如果您能提供帮助并给出明确答案,我将不胜感激。所以,无论如何,谢谢:)

编辑:让我介绍一个关于我的问题的简单例子。

控制器类代码部分;

public class RiskControllerClass implements Initializable {

   @FXML private SVGPath NA_1; // Alaska
   @FXML private SVGPath NA_2; // NorthWest_Ter
   .
   .
}

Territory类引用图中的顶点

public class Territory {

    public Territory(SVGPath nodeSVG, int territoryID, int playerID){

        this.playerID = playerID;
        this.territoryID = territoryID;
        this.nodeSVG = nodeSVG;
        this.label = nodeSVG.getId();
        this.adjacencyList = new LinkedList<>();
        this.edgeSet = new LinkedList<>();
    }
.
.
}

所以我想在我的图形中实现另一个类而不是Controller类,如GameBoard

public class GameBoard  {

    // Want to call @FXML instance variables here

}

1 个答案:

答案 0 :(得分:3)

除了访问控制器并从中调用方法之外别无他法。 @FXML注释没有神奇的方式使私有变量全局可用。 @FXML仅用于标记FXMLLoader的某些字段,以便他可以通过FXML实例化过程中的反射来访问它们 - 没有别的。

参考有关如何访问控制器的这些问题:

Accessing FXML controller class

JavaFX: How to get stage from controller during initialization?