2013-10-29 3 views
5

पर बच्चे को जोड़ने के बाद ऑटोरेज़ेज़ चरण, में एक अतिरिक्त विकल्प के साथ मुझेदिखाने की आवश्यकता है जब मैं Button पर क्लिक करता हूं, लेकिन मुझे नहीं पता कि इस व्यवहार को कैसे प्राप्त किया जाए। समस्या Stage जब मैं VBox रूट में पैनल जोड़ता हूं तो आकार बदल नहीं रहा है।जावाएफएक्स: रूट पैरेंट

मैंने समस्या का प्रदर्शन करने के लिए सरल कोड लिखा है।

import javafx.application.Application; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.control.Label; 
import javafx.scene.layout.VBox; 
import javafx.stage.Stage; 

public class Main extends Application { 
    public static void main(String[] args) { 
     launch(args); 
    } 

    public void start(Stage stage) throws Exception { 
     final VBox root = new VBox(); 
     Button button = new Button("add label"); 
     root.getChildren().add(button); 

     button.setOnAction(new EventHandler<ActionEvent>() { 
      public void handle(ActionEvent event) { 
       root.getChildren().add(new Label("hello")); 
      } 
     }); 

     stage.setScene(new Scene(root)); 
     stage.show(); 
    } 
} 

मैं मैं जड़ कंटेनर सूचित करने के लिए लेआउट करने के लिए कुछ विधि कॉल करने की जरूरत है लगता है, लेकिन सभी तरीकों मैं कोशिश नहीं लाया है मुझे परिणाम वांछित।

उत्तर

24

कार्यक्रम काम करता है

आपका कार्यक्रम लगभग काम कर रहा है के रूप में आप उम्मीद कर मुझे लगता है कि (जब आप "लेबल जोड़ें" बटन पर क्लिक करें, एक नया लेबल दृश्य में जोड़ा जाता है)।

क्यों आप यह काम कर रहा

आप नए जोड़े गए लेबल नहीं देख सकते हैं के रूप में एक मंच डिफ़ॉल्ट रूप से आकार है दृश्य की प्रारंभिक सामग्री फिट करने के लिए नहीं देख सकता। जब आप दृश्य में अधिक क्षेत्र जोड़ते हैं, तो चरण को स्वचालित रूप से नए क्षेत्र को शामिल करने के लिए आकार नहीं बदला जाएगा।

क्या करना है यह काम

मैन्युअल रूप से एक लेबल जोड़ने के बाद मंच विंडो का आकार बदलने को देखने के लिए।

या

दृश्य के लिए एक प्रारंभिक आकार सेट करें, ताकि आप नए जोड़े गए लेबल देख सकते हैं।

stage.setScene(new Scene(root, 200, 300)); 

या

आप प्रत्येक नए लेबल जोड़ने के बाद, size the stage to the scene

stage.sizeToScene(); 
0

सिर्फ कोड

button.setOnAction(new EventHandler<ActionEvent>() 
{ 
    public void handle(ActionEvent event) 
    { 
     root.getChildren().add(new Label("hello")); 
     stage.sizeToScene(); 
    } 
}); 
बदल