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
क्या आपने इसे setOnCloseRequest .. setOnCloseRequest
setOnCloseRequest(EventHandler<WindowEvent> value)
एक example
जावा 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);
}
}