这是因为您没有正确地
Labels从FXML文件中注入您的内容。
注释您的
Labelvar。带有
FXML注释:
public class InterfaceHandler implements Initializable { @FXML public Label nameLabel; @FXML public Label locationLabel; public void handleButton(ActionEvent event) throws IOException { locationLabel.setText("Town"); } public void setName(String name){ nameLabel.setText(name); } }另外,InterfaceHandler是您
fx:controller在FXML中引用的控制器。这指示FXMLLoader在加载程序加载其FXML时创建InterfaceHandler的新实例。因此,不要在Player类中创建新的InterfaceHandler,而应使InterfaceHandler成为Player的构造函数参数,并使用loader.getController从FXMLLoader中获取InterfaceHandler控制器实例。
FXMLLoader loader = new FXMLLoader();loader.setLocation(getClass().getResource("MainScreen.fxml"));Parent root = (Parent)loader.load();Player player = new Player(loader.getController());Scene scene = new Scene(root);. . .public class Player { private InterfaceHandler ui; public Player(InterfaceHandler ui) { this.ui = ui; } public void setNameLabel() { String name = "Dan"; ui.setName(name); }}


