我很好奇有没有办法在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
}
答案 0 :(得分:3)
除了访问控制器并从中调用方法之外别无他法。 @FXML
注释没有神奇的方式使私有变量全局可用。 @FXML
仅用于标记FXMLLoader
的某些字段,以便他可以通过FXML实例化过程中的反射来访问它们 - 没有别的。
参考有关如何访问控制器的这些问题:
Accessing FXML controller class
JavaFX: How to get stage from controller during initialization?