2015-01-08 11 views
5

मैं एक खिड़की के अंदर javaFx एप्लिकेशन श्वेत एकाधिक छवियां लिखने की कोशिश कर रहा हूं।
छोटी सी कहानी यह है कि मेरे पास enum वर्ग Candy है और प्रत्येक कैंडी में कुछ गुण हैं और इसका प्रतिनिधित्व करने वाली छवि फ़ाइल का पथ है।
मेरी javafx.application वर्ग (Table) मैं उन छवियों के साथ एक सरणी सूची भरना चाहते हैं निर्माता में, तो मैं अब तक यह लिखा:
आंतरिक ग्राफिक्स अभी तक प्रारंभ नहीं किए गए हैं: 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); 
     } 
    } 
} 

अब हर बार जब मैं का एक उदाहरण बनाना चाहते हैं Table कक्षा, एप्लिकेशन java.lang.RuntimeException: Internal graphics not initialized yet फेंकता है।
मैं प्रारंभिक ग्राफिक्स कैसे कर सकता हूं जो ऐसा लगता है कि मैंने नहीं किया?

+0

JavaFX समस्या ट्रैकर में संबंधित टिप्पणियों देखें: [RT-30,796 एक JavaFX छवि जब तक "आंतरिक ग्राफिक्स" प्रारंभ कर रहे हैं नहीं बना सकता] (https://javafx-jira.kenai.com/browse/RT-30796)। – jewelsea

+1

इसके अलावा, आपको टेबल क्लास का मैन्युअल रूप से कभी भी उदाहरण नहीं बनाना चाहिए (उदाहरण के लिए 'नई तालिका() 'कभी नहीं लिखें)। जावा इंस्टेंस जावा लॉन्चर द्वारा बनाया जाएगा - जावाएफएक्स एप्लीकेशन के विवरण के लिए [जावाएफएक्स एप्लीकेशन प्रलेखन] (http://docs.oracle.com/javase/8/javafx/api/javafx/application/Application.html) देखें जीवन चक्र। यह भी ध्यान रखें कि [एक जावाएफएक्स एप्लिकेशन एक से अधिक बार लॉन्च नहीं किया जा सकता है] (http://docs.oracle.com/javase/8/javafx/api/javafx/application/Application.html#launch-java.lang.String .. .-)। – jewelsea

+0

@jewelsea धन्यवाद। लेकिन क्या होगा यदि मैं अपने आवेदन में कुछ विशेष तरीकों (जैसे स्क्रीन पर कुछ की स्थिति बदलने की विधि) चाहता हूं तो मैं किसी अन्य फ़ंक्शन से कॉल करना चाहता हूं? (क्योंकि मैं अपने बनाए गए उदाहरण पर विधि को कॉल नहीं कर सकता) – AliLotfi

उत्तर

4

तुम सब linux उपयोग कर रहे हैं सबसे पहले, जीटीके 2,18

libswt-gtk-3-java 

स्थापित करने के लिए यह अपवाद उत्पन्न होगा जब भी आपकी स्क्रीन अशक्त .Try start विधि के अंदर अपने चित्र बनाने के लिए है JavaFX .try को चलाने के लिए आवश्यक है। primaryStage.show(); से ठीक पहले।

इस लिंक पर एक नजर डालें भी

http://cr.openjdk.java.net/~vadim/RT-33475/webrev.00/modules/graphics/src/main/java/com/sun/glass/ui/Screen.java.html

0

मुझे नहीं पता कि वास्तव में यह कैसे काम करता है, लेकिन जब हम पहले हमारे शुरुआत में एक JFXPanel बनाने हम त्रुटियों अब और नहीं मिलता है।

JFXPanel jfxPanel = new JFXPanel(); 
+0

यह निश्चित रूप से एफएक्स-एप्लिकेशन थ्रेड शुरू करता है – kleopatra

संबंधित मुद्दे