2012-10-02 20 views
7

在Swing中,我們可以在JSplitPane上使用setResizeWeight()來確定SplitPane的哪部分接收到可用空間。 JavaFX 2.2中是否有等價的方法?我只能找到setDividerPosition()方法,它並沒有真正做我想做的事情(每次大小改變時我都可以手動調用它,但如果可能,我希望避免這種情況。)JavaFX中SplitPane上的setResizeWeight()的等價物?

我也可以撥打setResizableWithParent(false) ,但這再一次沒有提供我所追求的那種控制。

回答

4

在查看SplitPane的API時,我發現這個靜態函數 - setResizableWithParent(root, Boolean.FALSE),它提供了與JSplitPane中的setResizeWeight()類似的功能。

SplitPane sp = new SplitPane(); 
    final StackPane sp1 = new StackPane(); 
    sp1.getChildren().add(new Button("Button One")); 
    final StackPane sp2 = new StackPane(); 
    sp2.getChildren().add(new Button("Button Two")); 
    final StackPane sp3 = new StackPane(); 
    sp3.getChildren().add(new Button("Button Three")); 
    sp.getItems().addAll(sp1, sp2, sp3); 
    sp.setDividerPositions(0.3f, 0.6f, 0.9f); 

    SplitPane.setResizableWithParent(sp1, Boolean.FALSE); 

    primaryStage.setScene(new Scene(sp, 300, 200)); 
    primaryStage.setTitle("Welcome to JavaFX!"); 
    primaryStage.sizeToScene(); 
    primaryStage.show(); 

setResizableWithParent可以模仿之間的setResizeWeight(0)setResizeWeight(1)但絕對沒有什麼價值。基本上,節點可以是自由流動的或固定的。

+0

感謝您的答案 - 但是,我是在以某種方式調整重量之後!這就是我的難處在於它似乎... – berry120

+0

'primaryStage.titleProperty()。bind(scene.widthProperty()。asString()。concat(「:」)。concat(sc.heightProperty()。asString())) ; DoubleBinding wid = scene.widthProperty()。add(0);'嘗試用'sp1.widthProperty()'綁定它,但API中沒有這樣的函數。 – Avik

+0

感謝這個答案,它幫助了我,是的,setResizeWeight會很棒。 – Burkhard