7
votes

Graphiques internes non initialisés: Javafx

J'essaie d'écrire un Javafx Application whit Plusieurs images à l'intérieur d'une fenêtre. de
La courte histoire est que j'ai un enum Classe nommée Candy et chaque bonbon a des propriétés et un chemin d'accès au fichier image représentant. de
Dans le constructeur de mon javafx.application classe ( table ) Je souhaite remplir une liste de matrices avec ces images, donc j'ai écrit cela jusqu'à présent:
xxx

maintenant chaque fois que je veux créer une instance de la classe de la classe , l'application jette un java.lang.runtimeexception: graphiques internes non initialisé mais . de
Comment puis-je initialement graphiques qu'il semble ne pas?


4 commentaires

Voir les commentaires associés dans le suivi de la question JavaFX: RT-30796 Impossible de créer une image JavaFX jusqu'à "interne Les graphiques "sont initialisés .


De plus, vous ne devez jamais créer manuellement une instance de la classe de table (par exemple, n'écrivez jamais nouvelle table () ). L'instance de table sera créée par le lanceur Java - voir le Documentation de l'application JavaFX pour plus de détails sur le cycle de vie de l'application Javafx. Notez également que Une application JavaFX ne peut pas être lancée plus d'une fois .


@Jewelsea merci. Mais si je veux avoir des méthodes spéciales dans mon application (comme une méthode changeant la position de quelque chose à l'écran) que je veux être appelée à partir d'une autre fonction? (Parce que je ne peux pas appeler la méthode sur mon exemple créé)


Méthodes d'appel qui interagissent avec le graphique de la scène sur le thread d'applications Javafx une fois que la méthode de démarrage de l'application a été invoquée.


3 Réponses :


6
votes

Tout d'abord si vous utilisez Linux, GTK 2.18 est nécessaire pour exécuter JavaFX. Installer

libswt-gtk-3-java


0 commentaires

2
votes

Je n'ai aucune idée de ce que cela fonctionne exactement, mais lorsque nous créons un JFXPanel d'abord dans notre démarrage, nous ne recevons plus les erreurs.

JFXPanel jfxPanel = new JFXPanel();


0 commentaires

0
votes

En réalité, la classe d'étage Javafx est le conteneur Javafx de niveau supérieur qui doit être construit et modifié sur le thread d'applications Javafx.

Vous utilisez ici la classe de scène mais n'a pas incorporé le contenu Javafx dans une application Swing qui peut vous montrer une " java.lang.runtimeeException avec les graphiques internes du message non initialisé. p>

Ici, vous pouvez utiliser - P>

JFXPanel JFXPanel = Nouveau JFXPanel (); Code> P >

ou vous pouvez utiliser de cette manière aussi. P>

    JFXPanel: https://docs.oracle.com/javase/8/javafx/api/javafx/embed/swing/JFXPanel.html

    Stage: https://docs.oracle.com/javase/8/javafx/api/javafx/stage/Stage.html


0 commentaires