2013-02-23 26 views
24

this code पर देखकर वे लॉगिन के बाद एक नई विंडो प्रदर्शित करने का एक तरीका दिखाते हैं। जब उपयोगकर्ता नाम और पासवर्ड सही होते हैं तो यह नया संवाद खुलता है। मैं चाहता हूं कि एक बटन उपयोगकर्ता नाम और पासवर्ड की जांच किए बिना नया संवाद खोलने के लिए क्लिक करें।जावाएफएक्स नई विंडो खोलें

+8

यह महत्वपूर्ण है कि आप इस तरह की चीजें सीखने के लिए समय लें। मैं किसी भी तरह से जावाएफएक्स का उपयोग करना चाहता हूं, मैं कुछ ट्यूटोरियल्स के माध्यम से जाने का सुझाव दूंगा। मैं अनुशंसा करता हूं [यह एक] (http://docs.oracle.com/javafx/2/get_started/jfxpub-get_started.htm) – blo0p3r

उत्तर

55

आप बस एक बटन एक नई विंडो खोलने के लिए चाहते हैं, तो कुछ इस तरह काम करता है:

btnOpenNewWindow.setOnAction(new EventHandler<ActionEvent>() { 
    public void handle(ActionEvent event) { 
     Parent root; 
     try { 
      root = FXMLLoader.load(getClass().getClassLoader().getResource("path/to/other/view.fxml"), resources); 
      Stage stage = new Stage(); 
      stage.setTitle("My New Stage Title"); 
      stage.setScene(new Scene(root, 450, 450)); 
      stage.show(); 
      // Hide this current window (if this is what you want) 
      ((Node)(event.getSource())).getScene().getWindow().hide(); 
     } 
     catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+1

क्या इसे छुपाए जाने के बजाय मौजूदा विंडो को 'ड्रॉप' करने का कोई तरीका है? – will

+0

@ विल्ल 'क्लोजिंग' और 'विंडो को छुपाएं' वही बात है। [यह उत्तर] (http://stackoverflow.com/a/10217157/686036) इस अवधारणा को समझाने में अच्छा है। – blo0p3r

+0

मेरा मतलब यह है कि उदाहरण को हटाएं। मेरे पास एक लंबा चलने वाला ऐप है (सप्ताह) और मुझे लिंट इकट्ठा करने के लिए एकत्र किए गए किसी भी संसाधन को गैर-कचरा की आवश्यकता नहीं है। – will

8

मैं अपने JavaFX अनुप्रयोगों में निम्न विधि का उपयोग।

newWindowButton.setOnMouseClicked((event) -> { 
    try { 
     FXMLLoader fxmlLoader = new FXMLLoader(); 
     fxmlLoader.setLocation(getClass().getResource("NewWindow.fxml")); 
     /* 
     * if "fx:controller" is not set in fxml 
     * fxmlLoader.setController(NewWindowController); 
     */ 
     Scene scene = new Scene(fxmlLoader.load(), 600, 400); 
     Stage stage = new Stage(); 
     stage.setTitle("New Window"); 
     stage.setScene(scene); 
     stage.show(); 
    } catch (IOException e) { 
     Logger logger = Logger.getLogger(getClass().getName()); 
     logger.log(Level.SEVERE, "Failed to create new Window.", e); 
    } 
}); 
संबंधित मुद्दे