java - विंडो बंद पर जावाएफएक्स एप्लिकेशन को कैसे बंद करें?




javafx javafx-2 (8)

getContentPane.remove (jfxPanel);

कोशिश करो (:

स्विंग में आप खिड़की बंद होने पर पूरे एप्लिकेशन को बंद करने के लिए बस setDefaultCloseOperation() का उपयोग कर सकते हैं।

हालांकि जावाएफएक्स में मुझे समकक्ष नहीं मिल रहा है। मेरे पास कई खिड़कियां खुली हैं और यदि खिड़की बंद है तो मैं पूरे एप्लिकेशन को बंद करना चाहता हूं। JavaFX में ऐसा करने का तरीका क्या है?

संपादित करें:

मैं समझता हूं कि मैं विंडो बंद पर कुछ ऑपरेशन करने के लिए setOnCloseRequest() को ओवरराइड कर सकता हूं। सवाल यह है कि पूरे आवेदन को समाप्त करने के लिए ऑपरेशन क्या किया जाना चाहिए?

stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
    @Override
    public void handle(WindowEvent event) {
        stop();
    }
});

Application क्लास में परिभाषित stop() विधि कुछ भी नहीं करती है।


आखिरी Stage बंद होने पर एप्लिकेशन स्वचालित रूप से बंद हो जाता है। इस समय, आपके Application क्लास की stop() विधि को कॉल किया जाता है, इसलिए आपको setDefaultCloseOperation() बराबर की आवश्यकता नहीं है

यदि आप इससे पहले एप्लिकेशन को रोकना चाहते हैं, तो आप Platform.exit() को कॉल कर सकते हैं, उदाहरण के लिए आपके onCloseRequest कॉल में।

आप इन सभी जानकारी को Application के जावाडोक पेज पर प्राप्त कर सकते हैं: http://docs.oracle.com/javafx/2/api/javafx/application/Application.html



जावा 8 का उपयोग करके यह मेरे लिए काम करता है:

@Override
public void start(Stage stage) {
    Scene scene = new Scene(new Region());
    stage.setScene(scene);

    /* ... OTHER STUFF ... */

    stage.setOnCloseRequest(e -> {
        Platform.exit();
        System.exit(0);
    });
}

प्रयत्न

 System.exit(0);

यह थ्रेड मुख्य को समाप्त करना चाहिए और मुख्य कार्यक्रम को समाप्त करना चाहिए


मेरे लिए केवल निम्नलिखित काम कर रहा है:

primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>() {
            @Override
            public void handle(WindowEvent event) {



                Platform.exit();
                Thread start=new Thread(new Runnable() {

                    @Override
                    public void run() {
                        // TODO Auto-generated method stub
                        System.exit(0);     
                    }
                });
                start.start();
            }

        });

संदर्भ के लिए, जावा 8 का उपयोग करके यहां एक न्यूनतम कार्यान्वयन है:

@Override
public void start(Stage mainStage) throws Exception {

    Scene scene = new Scene(new Region());
    mainStage.setWidth(640);
    mainStage.setHeight(480);
    mainStage.setScene(scene);

    //this makes all stages close and the app exit when the main stage is closed
    mainStage.setOnCloseRequest(e -> Platform.exit());

    //add real stuff to the scene...
    //open secondary stages... etc...
}

stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
    @Override
    public void handle(WindowEvent event) {
        Platform.exit();
        System.exit(0);
    }
}




javafx-8