javafx

2014-12-26 20 views
7

में अनुप्रयोग उदाहरण प्राप्त करना javafx का उपयोग करते समय मुझे एप्लिकेशन उदाहरण कैसे प्राप्त हो सकता है?javafx

public class LoginForm { 

    public static void main(String[] args) { 
     LoginApplication.launch(LoginApplication.class, args); 
    } 

} 

विधि लांच आवेदन का एक उदाहरण वापस नहीं करता है:

आम तौर पर आप एक आवेदन इस तरह का शुभारंभ। क्या कोई तरीका है जिससे मैं उदाहरण प्राप्त कर सकता हूं?

+0

क्या आपने इसे Google किया था? http://docs.oracle.com/javase/8/javafx/api/javafx/application/Application.html – Dici

+0

@Dici आपका क्या मतलब है? – user2997204

+0

आपको जो कुछ भी चाहिए वह डॉक्टर में है। आपकी मुख्य कक्षा को केवल 'एप्लिकेशन' का विस्तार करने की आवश्यकता है और फिर आपकी मुख्य विधि केवल 'लॉन्च' विधि को कॉल करेगी। असल में, जावाएफएक्स एप्लिकेशन – Dici

उत्तर

-4

आमतौर पर JavaFX आवेदन JavaFX विचारों के लिए scenebuilder का उपयोग करता है और यह एक नियंत्रक वर्ग जो fxml फ़ाइल तक पहुँचने पर कॉल करेंगे करने के लिए मैप किया गया है:

public class Main extends Application { 

    @Override 
    public void start(Stage stage) throws Exception { 
     FXMLLoader myLoader = new FXMLLoader(getClass().getResource("/loginform.fxml")); 
     Parent root = myLoader.load(); 
     Scene scene = new Scene(root); 
     stage.setScene(scene); 
     stage.initStyle(StageStyle.DECORATED); 
     stage.show(); 
    } 

    public static void main(String[] args) { 
     Application.launch(args); 
    } 
} 
+5

यह प्रश्न का उत्तर कैसे देता है? – mario

3

मैं सिर्फ वास्तव में ऐसा करने के लिए एक आसान, तार्किक ढंग से खोजने की कोशिश कर रहा था । मैंने नहीं किया यदि कोई अनुप्रयोग था .getApplicationFor (AppClass.class) जो आपके लिए कुछ सिंगलेट प्रबंधित करता है - लेकिन नहीं।

यदि हम समस्या स्थान को प्रतिबंधित करते हैं तो इसे हल करना बहुत आसान है। हम कक्षा एक सिंगलटन बनाने हैं, तो यह केक है ... एक सरलीकृत सिंगलटन पैटर्न ठीक काम करना चाहिए:

class MyApp extends Application 
{   
    public static MyApp me; 
    public MyApp() 
    { 
     me=this; 
    } 

    ... 
} 

मुझे अशक्त हो सकता है अगर यह अभी तक प्रणाली द्वारा instantiated नहीं किया गया है। अधिक कोड के साथ इसके खिलाफ रक्षा करना संभव होगा।

... कोड को लागू करने ...

बस कार्यान्वित इस - (किसी भी अजीब सूत्रण स्थितियों को छोड़कर) काम करने के लिए मैं एक अलग स्थिति, मैं एक मौजूदा स्विंग में एक JavaFX स्क्रीन wedging कर रहा हूँ है लगता है जीयूआई। यह ठीक काम करता है, लेकिन मुझे यह सुनिश्चित करने की ज़रूरत है कि एप्लिकेशन.लांच केवल एक बार बुलाया जाता है। इस आवश्यकता को जोड़ा जा रहा है, मेरा अंतिम समाधान इस प्रकार है:

(क्षमा करें, लेकिन वाक्य रचना उस में ग्रूवी कुछ, आसान किसी भी जावा उपयोगकर्ता का अनुवाद करने के लिए किया जाना चाहिए है)

class MyClass extends Application{ 
    private static MyClass instance 

    public MyClass() { 
     instance=this 
    } 

    public synchronized static getInstance() { 
     if(!instance) { 
      Thread.start { 
      // Have to run in a thread because launch doesn't return 
      Application.launch(MyClass.class) 
     } 
     while(!instance) 
      Thread.sleep(100) 
    } 
    return instance 
    ... 
} // class 

इस का प्रबंधन करता है अवरुद्ध जब तक Application.launch है कक्षा को तत्काल पूरा करना, अन्य स्थानों से उदाहरण प्राप्त करना और यह सुनिश्चित करना कि एप्लिकेशन.लांच को एक बार जब तक कम से कम एक बार कहा जाता है, तब तक कॉल किया जाता है।

+0

मैं सामान्य रूप से सिंगलटन के उपयोग के खिलाफ विरोध करता हूं, लेकिन एक साधारण क्लाइंट एप्लिकेशन के लिए अलग-अलग परिस्थितियों को अलग करता हूं, कम से कम जटिल समाधानों की आवश्यकता होने पर, यह ठीक काम करना चाहिए। – Neil

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