मेरा आवेदन स्विंग-आधारित है। मैं JavaFX को पेश करना चाहता हूं और इसे द्वितीयक डिस्प्ले पर एक दृश्य प्रस्तुत करने के लिए कॉन्फ़िगर करना चाहता हूं। मैं एक जेएफएक्सपीनल को पकड़ने के लिए जेएफआरएएम का उपयोग कर सकता हूं जो एक जेएफएक्सपैनल पकड़ सकता है लेकिन मैं जावाएफएक्स एपीआई के साथ इसे प्राप्त करना चाहता हूं।जावाएफएक्स 2.1: टूलकिट शुरू नहीं हुआ
sub.sassing com.sun.glass.ui. आवेदन और एप्लिकेशन.लांच (यह) का उपयोग करना एक विकल्प नहीं है क्योंकि इनवॉकिंग थ्रेड अवरुद्ध हो जाएगा।
जब स्विंग EDT से एक स्टेज instantiating, त्रुटि मैं मिलता है:
java.lang.IllegalStateException: Toolkit not initialized
किसी भी संकेत दिए गए?
संपादित करें: निष्कर्ष
समस्या: गैर तुच्छ स्विंग जीयूआई आवेदन JavaFX घटकों को चलाने के लिए की जरूरत है। एक आश्रित सेवा परत शुरू करने के बाद एप्लिकेशन की स्टार्टअप प्रक्रिया जीयूआई शुरू करती है।
समाधान
उपवर्ग JavaFX आवेदन वर्ग और एक अलग थ्रेड जैसे में इसे चलाने:
public class JavaFXInitializer extends Application {
@Override
public void start(Stage stage) throws Exception {
// JavaFX should be initialized
someGlobalVar.setInitialized(true);
}
}
Sidenote: Application.launch() विधि एक तर्क के रूप में एक Class<? extends Application>
लेता है क्योंकि, एक JavaFX पर्यावरण को सिग्नल करने के लिए वैश्विक चर का उपयोग करना शुरू कर दिया गया है।
वैकल्पिक दृष्टिकोण: इन्स्तांत स्विंग घटना डिस्पैचर थ्रेड में JFXPanel:
final CountDownLatch latch = new CountDownLatch(1);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new JFXPanel(); // initializes JavaFX environment
latch.countDown();
}
});
latch.await();
इस दृष्टिकोण का उपयोग करके बुला धागा जब तक JavaFX वातावरण की स्थापना की है इंतजार करेंगे।
कोई भी समाधान चुनें जिसे आप फिट देखते हैं। मैं दूसरे के साथ गया क्योंकि जावाफैक्स पर्यावरण के प्रारंभिक संकेत को इंगित करने के लिए इसे वैश्विक चर की आवश्यकता नहीं है और यह भी धागा बर्बाद नहीं करता है।
नायब बाहर निकलने के लिए है: काम करने के लिए सुझाए गए समाधान स्विंग एप्लिकेशन से जावाएफएक्स के साथ जेएफएक्स पैनेल बनाने और जावाएफएक्स दृश्य को jfxPanel.setScene() विधि में पास करना है। Http://docs.oracle.com/javafx/2/api/javafx/embed/swing/JFXPanel.html –
@ सर्गी ग्रेनेव: ठीक है, लेकिन कुछ घटकों के रूप में JFXPanel के भीतर समस्याएं उपयोग की जा रही हैं, JavaFX 2 को समझने का एक और तरीका स्विंग से अत्यधिक सराहना की जाती है। – dajood
हाय। कौन से घटकों में समस्याएं हैं? –