2013-03-10 13 views
6

Come si può ottenere un ridimensionamento proporzionale dell'intero SplitPane?JavaFX - SplitPane, ridimensionamento e proporzioni

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); 
    } 
} 

Avviare il programma:

enter image description here

Set divisori come li che mi piacciono:

enter image description here

Marca larghezza della finestra molto piccola (ho continuato e ne ha fatto ancora più piccolo, nessuna foto):

enter image description here

Ridimensionare e osservare che i divisori non sono né come li ho impostati né come erano quando è stato avviato il programma.

enter image description here

Facendo questo lo rende più vicino a quello che ci si aspetta:

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) 

eccezione del fatto che i divisori sono inizialmente nella posizione sbagliata (fino a ridimensionare SplitPane, 1px è sufficiente) e quando la finestra contrazione larghezza, i divisori sono all'interno dei componenti.

Come posso fare questo lavoro per favore?

risposta

1

tenta di aggiungere Change Listener a stage.widthProperty() e stage.heightProperty(). E chiamare questo:

split.setDividerPositions(0.1f, 0.6f, 0.9f) 
Problemi correlati