2015-01-08 8 views
5

Sto provando a scrivere un'applicazione javaFx con più immagini all'interno di una finestra.
Il breve è che ho una classe enum denominata Candy e ogni caramella ha alcune proprietà e un percorso per il file immagine che lo rappresenta.
Nel costruttore della mia javafx.application classe (Table) Voglio riempire una lista di array con quelle immagini, così ho scritto questo finora:
Grafica interna non ancora inizializzata: javafx

public class Table extends Application { 

    ArrayList<Image> images; 

    @Override 
    public void start(Stage primaryStage) throws Exception { 
     primaryStage.setTitle("CandyFx"); 
     primaryStage.show(); 
    } 

    public Table() { 
     images = new ArrayList<Image>(); 
     for (Candy candy : Candy.values()) { 
      File file = new File (candy.getImagePath()); 
      Image image = new Image(file.toURI().toString()); 
      images.add(image); 
     } 
    } 
} 

Ora ogni volta che voglio creare un'istanza di Classe Table, l'applicazione genera uno java.lang.RuntimeException: Internal graphics not initialized yet.
Come posso una grafica iniziale che sembra non averlo?

+0

Vedere i commenti connessi nella issue tracker JavaFX: [RT-30796 Impossibile creare un JavaFX immagine fino a quando "grafica interni" vengono inizializzati] (https://javafx-jira.kenai.com/browse/RT-30796). – jewelsea

+1

Inoltre, non dovresti mai creare manualmente un'istanza della classe Table (ad esempio, non scrivere mai 'new Table()'). L'istanza Table verrà creata dal programma di avvio Java: consultare la [documentazione dell'applicazione JavaFX] (http://docs.oracle.com/javase/8/javafx/api/javafx/application/Application.html) per i dettagli sull'applicazione JavaFX ciclo vitale. Si noti inoltre che [un'applicazione JavaFX non può essere avviata più di una volta] (http://docs.oracle.com/javase/8/javafx/api/javafx/application/Application.html#launch-java.lang.String .. .-). – jewelsea

+0

@jewelsea Grazie. ma cosa succede se voglio avere alcuni metodi speciali nella mia applicazione (come un metodo che modifica la posizione di qualcosa sullo schermo) che voglio essere chiamato da un'altra funzione? (perché non posso chiamare il metodo sulla mia istanza creata) metodi di chiamata – AliLotfi

risposta

0

non ho idea di come funziona esattamente, ma quando abbiamo creato un JFXPanel nel nostro inizio non otteniamo più gli errori.

JFXPanel jfxPanel = new JFXPanel(); 
+0

avvia implicitamente il thread dell'applicazione-fx – kleopatra

Problemi correlati