मैं जावाएफएक्स में नया हूं और मैं एक एप्लीकेशन बना रहा हूं और स्विंग घटकों का उपयोग करते समय जेडियलोग की तरह कुछ की आवश्यकता थी। मैंने हल किया कि नया मंच बनाकर, लेकिन अब मुझे बटन पर क्लिक करके अपने भीतर से नए चरण को बंद करने का एक तरीका चाहिए। (हाँ, एक्स बटन भी काम करता है, लेकिन इसे बटन पर भी चाहता था)। स्थिति का वर्णन करने के लिए: मेरे पास एक मुख्य वर्ग है जिसमें से मैं एक दृश्य के साथ मुख्य चरण बना देता हूं। मैं इसके लिए एफएक्सएमएल का उपयोग करता हूं।जावाएफएक्स 2: अपने आप से एक चरण (सबस्टेज) बंद करना
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("Builder.fxml"));
stage.setTitle("Ring of Power - Builder");
stage.setScene(new Scene(root));
stage.setMinHeight(600.0);
stage.setMinWidth(800.0);
stage.setHeight(600);
stage.setWidth(800);
stage.centerOnScreen();
stage.show();
}
अब मुख्य विंडो प्रकट होता है कि मैं सभी नियंत्रण वस्तुओं और मेनू और सामान, FXML और उचित नियंत्रण वर्ग के माध्यम से किया है में। यही वह हिस्सा है जहां मैंने सहायता मेनू में जानकारी शामिल करने का निर्णय लिया था।
@FXML
private void menuHelpAbout(ActionEvent event) throws IOException{
Parent root2 = FXMLLoader.load(getClass().getResource("AboutBox.fxml"));
Stage aboutBox=new Stage();
aboutBox.setScene(new Scene(root2));
aboutBox.centerOnScreen();
aboutBox.setTitle("About Box");
aboutBox.setResizable(false);
aboutBox.initModality(Modality.APPLICATION_MODAL);
aboutBox.show();
}
के रूप में देखा बॉक्स खिड़की के बारे में फिर से नियंत्रण वर्ग के साथ FXML के माध्यम से बनाया जाता है: के बारे में इस तरह सक्रिय होता है, - तो मैं एक घटना पर जब मेनू सहायता के लिए जा रहा है। एक तस्वीर, एक टेक्स्ट एरिया और एक बटन है, और मैं चाहता हूं कि वह बटन उस नए चरण को बंद कर दे जो कि लगभग बॉक्स क्लास के बारे में बात करने के लिए बॉक्स के बारे में है।
एकमात्र तरीका मैंने खुद को ऐसा करने में सक्षम होने के लिए पाया, सार्वजनिक स्थैतिक चरण के बारे में बॉक्स को परिभाषित करना था; Builder.java क्लास के अंदर और उस के बारे में AboutBox.java के भीतर से उस विधि में जो बंद बटन पर कार्रवाई ईवेंट को संभालता है। लेकिन किसी भी तरह से यह बिल्कुल साफ और सही महसूस नहीं करता है। क्या कोई बेहतर तरीका है?
आपकी सलाह के लिए अग्रिम धन्यवाद।
इस तरह के चरण को बंद करें onCloseRequest ईवेंट हैंडलर (अगर कोई है) को छोड़ देता है। मैं लाइन चरण जोड़ूंगा .getOnCloseRequest()। हैंडल (शून्य); stage से पहले .close(); – beardedlinuxgeek
धन्यवाद @beardedlinuxgeek। मुझे यह समस्या थी - मेरी खिड़की बंद हो रही थी लेकिन मैंने जिस ईवेंट हैंडलर को पंजीकृत किया था उसे नहीं बुलाया जा रहा था। आपके समाधान ने समस्या को ठीक किया। –