J'ai torturé google avec plusieurs questions, mais je n'arrive toujours pas à faire un point.JAVAFX Scene Builder contrôleurs multiples
Je veux créer une application avec 2 scènes FXML peuplées par SceneBuilder. Chacun a son propre contrôleur. J'utilise ControlledScreen pour échanger des Scènes et cela fonctionne. Mais je ne peux rien changer sur scène. Par exemple: i ont l'étiquette dans le contrôleur Scène:
public class ControllerForm implements ControlledScreen, Initializable {
ScreensController myController;
GraphicsContext GC;
@FXML
private Label fitnessLabel;
public void updateFitnessLabel(double data) {
fitnessLabel.setText(String.valueOf(data));
}
public void initialize(URL location, ResourceBundle resources) {
this.GC = neuroCanvas.getGraphicsContext2D();
}
Il est défini dans le fichier FXML comme:
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="684.0" prefWidth="918.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="general.ControllerForm">
<left>
<VBox prefHeight="400.0" prefWidth="189.0" BorderPane.alignment="CENTER">
<children>
<Label fx:id="fitnessLabel" text="Label">
<graphic>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Fitness:" />
</graphic>
</Label>
et la fonction de mise à jour est l'étiquette updateFitnessLabel.
Dans la méthode d'initialisation, j'utilise GC parce que j'ai une toile sur cette scène et que je veux dessiner dessus.
J'ai méthode qui appelle à cette fucntion comme:
public class Net {
private ControllerForm controller;
public void drawStart() throws IOException {
FXMLLoader loader = new FXMLLoader(
getClass().getResource(
Main.ScreenFile
)
);
BorderPane cv = loader.load();
// load actual screen
ControllerForm controller =
loader.<ControllerForm>getController();
controller.updateFitnessLabel(12);}
Mais aucun effet. L'étiquette ne sera pas mise à jour.
Que manque-t-il?
J'ai essayé d'utiliser Timeline, mais toujours aucun effet. Comment activer dessiner quelque chose sur cette scène?
Il serait utile si vous pouviez fournir plus de contexte. A quoi ressemble le FXML? Y a-t-il un autre code de contrôleur pertinent? –
Rien de plus n'est pertinent. FXML est standart. Si je dessine quelque chose dans initialize, il semble que le contrôleur fonctionne. – SystemFailure
Sans le FXML et des exemples de code supplémentaires, il sera difficile d'aider à diagnostiquer votre problème. –