2014-05-23 4 views
0

내 응용 프로그램에서 JavaFX SplitPanes를 사용 중이고 높이와 너비가 변경 될 때 분할 자 위치를 변경해야합니다. 분할 자 위치를 고정으로 유지하고 싶습니다..너비/높이 수신기를 사용하여 컨트롤을 업데이트하는 JavaFX

scene.widthProperty().addListener(new ChangeListener<Number>() { 
    @Override 
    public void changed(ObservableValue<? extends Number> observableValue, Number oldSceneWidth, Number newSceneWidth) { 
     GUIController.resetMainSplitPane(); 
    } 
}); 
scene.heightProperty().addListener(new ChangeListener<Number>() { 
    @Override 
    public void changed(ObservableValue<? extends Number> observableValue, Number oldSceneHeight, Number newSceneHeight) { 
      GUIController.resetMusicSplitPane(); 
    } 
}); 

과 resetSplitPane 방법 :

public static void resetMusicSplitPane() { 
    musicSplitPane.setDividerPosition(0, 0.7); 
    Util.err("height changed"); 
} 

라는 메시지가 '높이가 변경'어떻게해야합니까 그러나 디바이더의 위치가 전혀 변경되지를 다음과 같이 내 코드입니다. 나는 이것이 나의 변화를 덮어 쓰는 JavaFX의 gui 변경과 관련이 있다고 생각한다. 다른 말로; 나는 디바이더 위치를 변경하지만 JavaFX는 윈도우의 크기 조정에 따라 레이아웃이 변경되기 때문에 다시 변경합니다.

답변

0

일반적으로 구분선은 장면 크기가 조정될 때마다 (즉 구분선의 양면 크기가 증가/감소 할 때) 자동으로 조정됩니다. 내가 왜 디바이더 위치를 설정하려하는지 생각할 수있는 유일한 이유는 디바이더의 한면의 높이/너비를 늘리거나 줄이지 않기 때문입니다. 이것은 (예 hereSergey 의해 주어진), 작동 방법을 보여

SplitPane.setResizableWithParent(paneToBeFixed, Boolean.FALSE); 

작은 예를 이용하여 달성 될 수

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.control.SplitPane; 
import javafx.scene.layout.Pane; 
import javafx.scene.layout.StackPane; 
import javafx.scene.text.Text; 
import javafx.stage.Stage; 


public class TestObjectArray extends Application { 

    @Override 
    public void start(Stage stage) { 
     final SplitPane root = new SplitPane(); 

     final Pane paneFixed = new StackPane(); 
     paneFixed.getChildren().add(new Text("Fixed")); 

     SplitPane.setResizableWithParent(paneFixed, Boolean.FALSE); 

     Pane paneFree = new StackPane(); 
     paneFree.getChildren().add(new Text("Free")); 

     root.getItems().addAll(paneFixed, paneFree); 

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

    } 
    public static void main(String[] args) { 
     launch(args); 
    } 
} 
+1

문제하다는 사용자가 윈도우의 폭이 증가하면 분할 창 구분선을 고정시키고 싶습니다. 분할 창 구분선 값에 제한을 두는 방법이 있습니까? 왜냐하면'setResizableWithParent (..) '메소드는 내 문제를 해결하지 못하기 때문이다. – Cobbles

관련 문제