2013-03-10 25 views
6

Wie kann ich eine proportionale Größe der ganzen SplitPane erreichen?JavaFX - SplitPane, Größenanpassung & Proportionen

public class JfxSplitPaneTest extends Application { 
    @Override 
    public void start(Stage stage) throws Exception { 
     SplitPane split = new SplitPane(); 
     StackPane child1 = new StackPane(); 
     child1.setStyle("-fx-background-color: #0000AA;"); 
     StackPane child2 = new StackPane(); 
     child2.setStyle("-fx-background-color: #00AA00;"); 
     StackPane child3 = new StackPane(); 
     child3.setStyle("-fx-background-color: #AA0000;"); 
     split.getItems().addAll(child1, child2, child3); 
     //split.setDividerPositions(0.1f, 0.6f, 0.9f) 
     stage.setScene(new Scene(split, 400, 300)); 
     stage.show(); 
    } 
    public static void main(String[] args) { 
     launch(args); 
    } 
} 

Starten Sie das Programm:

enter image description here

Set Teiler, wie ich sie mag:

enter image description here

Fensterbreite klein machen wirklich (ich fort und machte es noch kleiner, kein Bild):

enter image description here

Ändern Sie die Größe und beachten Sie, dass Teiler weder wie ich sie einstelle noch wie sie waren, als das Programm gestartet wurde.

enter image description here

dies tun macht es näher an, was ich erwarten würde:

child1.setMinWidth(Region.USE_PREF_SIZE) 
    child1.setPrefWidth(100) 
    child2.setMinWidth(Region.USE_PREF_SIZE) 
    child2.setPrefWidth(200) 
    child3.setMinWidth(Region.USE_PREF_SIZE) 
    child3.setPrefWidth(300) 

außer dass Teiler sind initally an der falschen Position (bis ich SplitPane Größe ändern, 1px ist genug), und wenn Fenster schrumpfen Breite, Teiler sind innen Komponenten.

Wie kann ich das bitte machen?

Antwort

1

Versuchen ändern Listener stage.widthProperty() und stage.heightProperty() hinzuzufügen. Und nennen dies:

split.setDividerPositions(0.1f, 0.6f, 0.9f) 
Verwandte Themen