2013-02-07 36 views
14

फिट करने के लिए मैं एक साधारण लेबल और एक बटन के एक जोड़े दिखा GridPane है, लेकिन मैं यह माता पिता StackPane फिट करने के लिए प्राप्त करने के लिए नहीं कर पा रहे हैं। मैं कैसे आगे बढ़ूंगा और इसे बनाऊंगा ताकि वह जो भी कंटेनर भर सके, वह भर जाए?JavaFX - GridPane माता पिता

GridPane g = new GridPane(); 
    g.add(new Label("Categories"),0,0); 
    g.add(new Label("Content"),1,0);   
    Button newCat = new Button("New Category"); 
    newCat.setOnAction(new EventHandler<ActionEvent>() { 
     @Override public void handle(ActionEvent e) { 
      System.out.println("Clicked"); 
     } 
    });  
    g.add(newCat,0,1); 
    g.setGridLinesVisible(true); 
    StackPane root = new StackPane(); 
    root.getChildren().add(g);   
    Scene scene = new Scene(root, 300, 250); 
    primaryStage.setScene(scene); 
    primaryStage.show(); 

यूआई वास्तव में मेरा फोर्टे नहीं है और किसी भी मदद की सराहना की जाएगी।

उत्तर

0

बल्कि तो StackPane में GridPane डाल आप HBox या VBox में अपने GridPane जोड़ना चाहिए। यह आपके ग्रिडपेन को समायोजित करने के लिए अधिक दृढ़ है। बीटीडब्ल्यू में आपके पास अभी भी कुछ तरीकों जैसे g.setPrefSize (arg0, arg1) हैं; तदनुसार अपनी ऊंचाई और चौड़ाई निर्धारित करने के लिए।

+0

मुझे पता है, लेकिन वांछित माप ऐसा नहीं 'की स्थापना करके माता-पिता के लिए टी पैमाने यह, यह सिर्फ एक आकार है कि विदेशी मुद्रा का उपयोग करने की कोशिश करेंगे करता है, पर मैं हालांकि मैं एक मुश्किल समय विश्वास है कि मेरी इस मुद्दे को ठीक है, क्योंकि यह अन्य मदों आकार फिर से नहीं करता होता है यह एक HBox डालने की कोशिश करेंगे, बटन और इसके आगे की तरह ... लेकिन मैं इतना कहना ^^ –

+0

क्षमा कोशिश करता हूँ, लेकिन या तो HBox या VBox इसे भरने माता पिता चला जाता है बनाने के रूप में के रूप में एफएएस GridPanes आकार पर कोई प्रभाव नहीं पड़ा। –

+0

@JohnMikaelGundersen इस तरह से प्रयास करें और तदनुसार अपनी ग्रिड बाधा समायोजित करें। [लिंक] http://pastebin.com/rA0Ch8ET –

0

हालांकि यह स्पष्ट नहीं है, मुझे लगता है कि अपने GridPane पहले से ही अपने माता-पिता कंटेनर के रूप में के रूप में बड़ा है। आप पहले निम्नलिखित 2 लाइनों जोड़ देते हैं तो "दृश्य दृश्य = नए दृश्य (जड़, 300, 250);", आप को देखने के लिए क्या हो रहा है सक्षम होना चाहिए।

root.setStyle("-fx-background-color: yellow;"); 
g.setStyle("-fx-border-color: blue;"); 
+0

यह माता-पिता को स्केल नहीं करता है, जहां तक ​​मैं देख सकता हूं –

+0

ग्रिडपेन को यह नहीं पता कि कैसे पुनर्वितरण करना है अतिरिक्त चौड़ाई और ऊंचाई। आपको इसे परिभाषित करने की आवश्यकता है। क्या आप चाहते हैं कि पहली पंक्ति सभी अतिरिक्त लंबवत स्थान ले ले और दूसरा कॉलम सभी अतिरिक्त क्षैतिज स्थान ले ले? क्या आपने इसके बजाए टेबलव्यू का उपयोग करने पर विचार किया है? – ytw

10

आप इस link, प्रतिशत आकार के बारे में विशेष रूप से हिस्सा देखना चाहिए। आप केवल दो कॉलम हैं, तो मैं ने पाया है कि कोड काम करने के लिए:

GridPane grid = new GridPane(); 
/* your code */ 
ColumnConstraints column1 = new ColumnConstraints(); 
column1.setPercentWidth(50); 
grid.getColumnConstraints().add(column1); 
+1

यह बिल्कुल काम करता है। मैं पागल हो रहा था क्योंकि मेरा ग्रिडपेन माता-पिता को फिट नहीं कर रहा था, लेकिन अब यह करता है। और एक नोट: यह अधिक से अधिक coulums के साथ भी काम करता है, तदनुसार मूल्यों को समायोजित करें! –

+0

धन्यवाद, मैंने आपके नोट को उत्तर में जोड़ा। – Videl

8

मामले में किसी को भी एक जवाब की तलाश में हो जाएगा, तो यह मेरे लिए काम किया है:

@Override 
public void start(Stage stage) throws Exception { 
    stage.setTitle("Window title"); 
    GridPane grid = new GridPane(); 

    gridSetup(grid); // Building my grid elements here (2 columns) 

    // Setting columns size in percent 
    ColumnConstraints column = new ColumnConstraints(); 
    column.setPercentWidth(30); 
    grid.getColumnConstraints().add(column); 

    column = new ColumnConstraints(); 
    column.setPercentWidth(70); 
    grid.getColumnConstraints().add(column); 

    grid.setPrefSize(WINDOW_WIDTH, WINDOW_HEIGHT); // Default width and height 
    grid.setMaxSize(Region.USE_COMPUTED_SIZE, Region.USE_COMPUTED_SIZE); 

    Scene scene = new Scene(grid, WINDOW_WIDTH, WINDOW_HEIGHT); 
    stage.setScene(scene); 
    stage.show(); 
} 
इस स्थापना के साथ

ग्रिड खिड़की की सभी जगह लेता है और खिड़की के साथ स्वचालित रूप से आकार बदलता है।

3

के अपने लेआउट लगता है 2 कॉलम और 3 पंक्तियों करते हैं, आप अपने कॉलम के आकार के गुणों और पंक्तियों एक-एक करके परिभाषित कर सकते हैं:

<GridPane 
    xmlns:fx="http://javafx.com/fxml/1"  
    id="gridPane" 
    prefHeight="768.0" 
    prefWidth="1024.0">  

    <gridLinesVisible>true</gridLinesVisible> 
    <columnConstraints> 
     <ColumnConstraints percentWidth="20" /> 
     <ColumnConstraints percentWidth="80" />   
    </columnConstraints> 

    <rowConstraints> 
     <RowConstraints minHeight="50"/> 
     <RowConstraints percentHeight="80"/> 
     <RowConstraints minHeight="50"/> 
    </rowConstraints> 

</GridPane>